如何在MySQL中使用where条件显示数据

问题描述 投票:0回答:1

我有一个问题,我想在

status_riwayat = keluar
的 ON 子句中使用此列的使用条件显示数据,并显示
status_riwayat = masuk
不使用列 tanggal 条件的数据,如下所示。

桌子供应商

CREATE TABLE pj_detailsupplier 
(
    id_detailsupplier int,
    id_barang int,
    id_supplier int,
    no_batch varchar(255),
    stok int,
    tanggal date,
    tgl_expired date,
    status_detailsupplier int 
);

INSERT INTO `pj_detailsupplier`(`id_detailsupplier`, `id_barang`, `id_supplier`, `no_batch`, `stok`, `tanggal`, `tgl_expired`, `status_detailsupplier`) 
VALUES ('13208','205','25','1','12','2022-01-01','2022-01-01','0')

表历史记录

CREATE TABLE pj_riwayat 
(
    id_riwayat int,
    id_detailsupplier int,
    jumlah int,
    keluar int,
    sisa int,
    tanggal date,
    status_riwayat varchar(255) 
);

INSERT INTO `pj_riwayat`(`id_riwayat`, `id_detailsupplier`, `jumlah`, `keluar`, `sisa`, `tanggal`, `status_riwayat`) 
VALUES ('','13208','12','0','12','2022-09-02','masuk'), 
       ('','13208','0','2','10','2022-11-14','keluar')

我想显示来自

status_riwayat = masuk
status_riwayat = keluar
的数据,但使用 where 条件

我已经尝试过这段代码

SELECT * 
FROM pj_riwayat
LEFT JOIN pj_detailsupplier ON pj_riwayat.id_detailsupplier = pj_detailsupplier.id_detailsupplier 
                            AND month(pj_riwayat.tanggal) = 11 
                            AND year(pj_riwayat.tanggal) = 2022 
WHERE pj_detailsupplier.id_barang = 205

但此代码仍然是错误的,因为我在 ON 子句中使用了此列的条件。我希望显示 status_riwayat=masuk AND status_riwayat=keluar

的数据

我的代码结果只显示一行数据:

enter image description here

我想要的结果是使用上面的查询显示如下两个数据

enter image description here

mysql where-clause
1个回答
0
投票

看来你需要这个:

SELECT t2.*, t3.*
          -- find id_detailsupplier which matches 
          -- id_barang=205 and tanggal=2022-11-XX
FROM pj_riwayat t1
JOIN pj_detailsupplier t2
  ON t1.id_detailsupplier=t2.id_detailsupplier 
          -- select all rows with found id_detailsupplier
          -- from another table copy
JOIN pj_riwayat t3
  ON t1.id_detailsupplier=t3.id_detailsupplier 
WHERE t2.id_barang=205
  AND month(t1.tanggal)=11
  AND year(t1.tanggal)=2022 
  AND t3.status_riwayat IN ('masuk', 'keluar')

https://dbfiddle.uk/upv6Kc4A

© www.soinside.com 2019 - 2024. All rights reserved.