Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [SQL] Запрос на выборку из 3х таблиц


Автор: ИванМ 30.3.2010, 21:04
Есть 3 таблицы. 1я и 2я независимые, содержащие данные. 3я является связующей между 1й и 2й.
Т.е. в 3й таблице 2 поля: id 1й таблицы и id 2й таблицы. Как с помощью SQL запроса вывести данные из 2й таблицы, которые не связаны с 1й таблицей через 3ю?

Автор: orthrus 31.3.2010, 04:55
Можно сделать такой запрос:
Код

SELECT * 
FROM (SELECT table2.id AS id2,table3.id AS id3,id_t1,id_t2 
      FROM table2 LEFT JOIN table3 
            ON table2.id = id_t2) 
WHERE (id_t2 IS NULL) OR (id_t1 IS null);

Автор: t_gran 31.3.2010, 05:02
Что-то не очень понятно, причём тут 1-ая если вы говорите что 3-ья - это связка 1-ой и 2-ой. А раз так, то выходит, что если id из 2-ой таблицы не встречается в 3-ей, то соответственно связка 2-1 отсутствует. А такой запрос делается в три пятнадцать. Приведите конкретный пример с результатом. Но если всё таки правильно понял вас, то вот:
Код

SELECT * FROM table_B WHERE id NOT IN (SELECT id FROM table_B, table_C WHERE id == id_B);
 

Автор: ИванМ 31.3.2010, 19:12
Цитата(t_gran @  31.3.2010,  05:02 Найти цитируемый пост)
Что-то не очень понятно, причём тут 1-ая если вы говорите что 3-ья - это связка 1-ой и 2-ой. А раз так, то выходит, что если id из 2-ой таблицы не встречается в 3-ей, то соответственно связка 2-1 отсутствует. 

Да, связка может быть, а может и не быть. Ваш запрос чуть подредактировал, стало как надо. Спасибо.

orthrus, ваш запрос access не понимает. Но все равно спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)