Подключить третью таблицу

Рейтинг: 0Ответов: 1Опубликовано: 09.03.2015
SELECT * FROM users A INNER JOIN (SELECT * FROM [BASE].[dbo].[list]) AS B ON A.idname = B.user_id

Выводит замечательно 2 таблицы.

Цель: в таблице 1 лежат данные пользователей (ФИО, год рождения. и др.), а в таблице list лежат только идентификаторы этих пользователей, не могу подключить третью таблицу, чтобы список был из таблицы list и list1, но данные были из users.

Данные в таблице user:
idname surname name patronymic age
pupkin65 Пупкин Иван Иваныч 1965
vasukov63 Васюков Петр Генадьевич 1963
permskii63 Пермский Денис Грегорьевич 1961
moskva64 Москва Сергей Иванович 1964

list1
user_id
moskva64
vasukov63

list
user_id
pupkin65
permskii63
vasukov63

нужно вывести данные как в таблице users но только тех кто в таблице list и list1

Ответы

▲ 1Принят

Вложенный запрос не нужен:

SELECT A.*, B.*
FROM users A 
  INNER JOIN list B ON A.idname = B.user_id

И далее просто добавляете еще одну связь аналогичным join'ом.

UPD Выбирайте:

SELECT A.*
FROM users A 
  INNER JOIN (SELECT user_id FROM list UNION SELECT user_id FROM list1) B ON A.idname = B.user_id

или

SELECT A.*
FROM users A
WHERE idname in (SELECT user_id FROM list UNION SELECT user_id from list1)

или

SELECT A.*
FROM users A
WHERE idname in (SELECT user_id FROM list) or idname in (SELECT user_id from list1)

или

SELECT A.*
FROM users A
WHERE EXISTS (SELECT 1 FROM list WHERE user_id=A.idname) 
  or EXISTS (SELECT 1 from list1 WHERE user_id=A.idname)

результат будет один и тот же (впрочем можно подобрать данные, что результат будет отличаться).