检查SQL Server中是否存在数据
问题描述:
我正试图从我的表中创建一个检查。我有三张表hari
,transaksi
& Outlet
。检查SQL Server中是否存在数据
我的表hari
只有一个名为days
一列:
days
2016-07-21 00:00:00.000
2016-07-22 00:00:00.000
2016-07-23 00:00:00.000
2016-07-24 00:00:00.000
2016-07-25 00:00:00.000
2016-07-26 00:00:00.000
我的第二个表是transaksi
:
| outlet | Tanggal |
K-MGAS 2016-07-23
K-JGMM2 2016-07-24
K-JGMM2 2016-07-25
K-CL4 2016-07-26
,最后一个是outlet
:
| OutletCode |
K-MGAS
K-JGMM2
K-CL4
正如你可以看到几天和outlet
是主表,transaksi是事务表。现在,当我尝试选择没有任何交易的插座时,我遇到了问题。
我期望的结果是这样的
| Outlet | Days |
K-MGAS 2016-07-21 00:00:00.000
K-MGAS 2016-07-22 00:00:00.000
K-MGAS 2016-07-24 00:00:00.000
K-MGAS 2016-07-25 00:00:00.000
K-MGAS 2016-07-26 00:00:00.000
我怎样才能做到这一点?
答
使用CROSS JOIN,然后LEFT JOIN
SELECT O.OutletCode
,H.Days
FROM Outlet O
CROSS JOIN Hari H
LEFT JOIN Transaksi T ON T.Outlet = O.OutletCode
AND T.Days = H.Days
WHERE T.Days IS NULL
答
我认为你正在寻找类似下面的查询的内容:
SELECT *
FROM Outlet O
CROSS JOIN Hari H
WHERE NOT EXISTS (SELECT * FROM Transaksi WHERE Outlet=O.OutletCode AND Tanggal=H.Days)
'现在,我有一个问题,当我尝试选择一个没有交易的插座时 - 你尝试了什么? – MusicLovingIndianGirl