2014-12-02 37 views
0

我想顯示/顯示產品是否找到每筆交易。如何顯示其他表中是否存在字段?

tblProducts

ID  PRODCODE PRODDESC 
1  PFX-321  MILK CHOCO 
2  PDF-875  COFFEE JELLY 
3  PWA-718  MILK SHAKE 

tblTransactions

TCODE  PRODCODE 
BMX2213391 PFX-321 
BMX2213391 PDF-875 
PDFSD92851 PDF-875 

我想要的結果顯示這樣

TCODE  PRODCODE FOUND 
BMX2213391 PFX-321  YES 
BMX2213391 PDF-875  YES 
BMX2213391 PWA-718  NO 
PDFSD92851 PFX-321  NO 
PDFSD92851 PDF-875  YES 
PDFSD92851 PWA-718  NO 

我試過了,INNER JOIN,FULL OUTER JOIN,LEFT Ĵ OIN和RIGHT JOIN,但我沒有得到我需要的確切數據。

這裏是我測試的查詢。

SELECT * FROM tblProducts a INNER JOIN tblTransactions b ON a.PRODCODE = b.PRODCODE 
SELECT * FROM tblProducts a FULL OUTER JOIN tblTransactions b ON a.PRODCODE = b.PRODCODE 
SELECT * FROM tblProducts a LEFT JOIN tblTransactions b ON a.PRODCODE = b.PRODCODE 
SELECT * FROM tblProducts a RIGHT JOIN tblTransactions b ON a.PRODCODE = b.PRODCODE 
+0

Plesae顯示你的嘗試。 – 2014-12-02 23:49:35

+0

[Here](http://i62.tinypic.com/28j9rw2.png)就是我所做的。 – pvzkch 2014-12-03 00:00:50

+0

在問題中粘貼您的查詢。 – 2014-12-03 00:03:09

回答

1

我敢肯定,這個工程 - SQLFiddle這裏:http://sqlfiddle.com/#!3/65eb1/23

WITH AllVals AS 
(SELECT a.PRODCODE, b.TCODE 
FROM tblProducts a 
CROSS JOIN tblTransactions b) 

SELECT DISTINCT c.PRODCODE, 
    c.TCODE, 
    CASE WHEN d.PRODCODE IS NULL THEN 'NO' ELSE 'YES' END AS FOUND 
FROM AllVals c 
LEFT OUTER JOIN tblTransactions d 
ON c.PRODCODE = d.PRODCODE 
AND c.TCODE = d.TCODE 
+0

顯示不正確的數據。 http://tinypic.com/r/jq6tsp/8 – pvzkch 2014-12-03 00:18:43

+0

再試一次 - 有一個小錯誤。 – 2014-12-03 00:20:28

+0

什麼不起作用? – 2014-12-03 00:21:46

1

http://sqlfiddle.com/#!3/65eb1/24

select DT.TCODE, DT.PRODCODE, case when (Tr2.TCODE IS null and Tr2.PRODCODE IS null) then 'No' else 'Yes' END as FOUND 
from tblTransactions Tr2 right join 
(
select distinct Tr.TCODE, p.PRODCODE    
from tblProducts p cross join tblTransactions Tr 
) DT 
on DT.PRODCODE = Tr2.PRODCODE and DT.TCODE = Tr2.TCODE; 
相關問題