2012-01-30 5 views
2

Я пытаюсь решить эту проблему в течение довольно длительного времени, а результат неверный. Кто-нибудь может мне с этим помочь? Я использую mysql, поэтому полное соединение не работает. Спасибо yyouПрисоединение к 3 таблицам SQL

3 таблицы:

Frequents (attributes: drinker, bar, times_a_week), 
Likes (attributes: drinker, beer), 
Serves (attributes: bar, beer, price), 

вопрос задать для всех пьющих, которые часто «каждый» бар, которые служат некоторые сорта пива, которые им нравятся

Мой ответ выглядит следующим образом:

SELECT drinker 
FROM frequents 
WHERE drinker NOT IN (SELECT f.drinker FROM frequents f 
        JOIN likes l ON f.drinker=l.drinker 
        LEFT JOIN serves s ON l.beer=s.beer 
        AND s.bar=f.bar 
        WHERE s.bar IS NULL) 
+1

Это домашнее задание? –

+0

Можете ли вы предоставить образец ввода и ожидаемый результат? –

+0

@ypercube: приятно редактировать. Я не уверен, что знал о теге 'relational-division'! – onedaywhen

ответ

0

как об этом:

select * 
from Frequents 
where bar in (select bar from Serves S join Likes L on S.beer=l.beer) 

Если он не работает, можете ли вы опубликовать какой-нибудь пример ваших данных?

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