2015-01-04 2 views
1
tableA 
Aid | Aname  | 
1 | univer | 
2 | teaser | 

tableB 
Bid | Bname | 
66 | ako | 
77 | fas | 
88 | yh | 

значение в tableA должно быть сопоставлено со всеми значениями в tableBКак выбрать отображенные данные, которые не находятся в другой таблице

tableC 
Aid | Bid | 
1 | 66 | 
1 | 88 | 
2 | 66 | 
2 | 77 | 

Теперь я хочу, чтобы выбрать значения из tableA отображенных в tableB, которые не в tableC. Например, я хочу найти Aid=1 и Bid=77, поскольку они не нашли в tableC, снова найти Aid=2 и Bid=88, поскольку они не нашли в tableC.

EXPECTED RESULTS 
    Aid | Bid | 
    1 | 77 | 
    2 | 88 | 

ответ

3

Вы можете создать все перестановки с cross join, то вы можете использовать оператор not exists отфильтровать перестановки, которые уже существуют в tablec:

SELECT  aid, bid 
FROM  tablea a 
CROSS JOIN tableb b 
WHERE  NOT EXISTS (SELECT * 
         FROM tablec c 
         WHERE c.aid = a.aid AND c.bid = b.bid) 

Пример Результат:

AID BID 
1 77 
2 88 

Результаты в SQL Fiddle.

+0

Получил свободу добавить скрипку. Надеюсь, вы не против. :) –

+0

@RagingBull совсем нет, спасибо! – Mureinik

+0

Спасибо, человек! за помощь. Очень ценю – George

Смежные вопросы