2014-12-02 1 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, влево J 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 показать свою попытку. –

+0

[Здесь] (http://i62.tinypic.com/28j9rw2.png) - это то, что я сделал. – pvzkch

+0

Вставьте свой вопрос в вопрос. –

ответ

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

+0

Попробуйте еще раз - произошла незначительная ошибка. –

+0

что не работает? –

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; 
Смежные вопросы