LEFT JOIN & RIGHT JOIN & IS NULL
三個資料表,其中兩個使用 INNER JOIN 連結,連結後和第三個資料表比對兩不相符資料。此處作用是比對 SmartERP 轉檔暫存,還有哪些資料未處理。
SQL 指令關鍵是使用 LEFT JOIN 或 RIGHT JOIN 連結兩邊的資料表,然後在 WHERE 輸入另一邊資料表比對欄位條件為 IS NULL 。
所以,如果使用 LEFT JOIN ,那就是右邊的資料表比對欄位使用 IS NULL 來進行比對。
1 2 3 4 5 |
SELECT * FROM hhdb.dbo.PURTG AS PURTG INNER JOIN hhdb.dbo.PURTH AS PURTH ON TG001=TH001 AND TG002=TH002 LEFT JOIN money_erp.dbo.KJSNFB AS KJSNFB ON TH001=PURTH001 AND TH002=PURTH002 AND TH003=PURTH003 WHERE TG003 LIKE '{$search_date}%' AND TG001<>'3401' AND TH009<>'H04'AND TG005='$TG005' AND PURTH001 IS NULL AND PURTH002 IS NULL AND PURTH003 IS NULL ORDER BY TG003 |
HAVING & SUM()
兩個資料表,比對金額欄位是否已經處理完成,從以上轉檔為例,如果資料需要拆解成多筆資料歸屬不同對象,那就需要 HAVING 以及 SUM() 來加總資料比對。
1 2 3 4 5 |
SELECT TABLE1.A FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.A = TABLE2.A GROUP BY TABLE1.A, TABLE1.B HAVING (TABLE1.B = SUM(TABLE2.B)) |
--
878 total views, 1 views today