запрос на 3 таблицы с объединением - PullRequest
0 голосов
/ 12 февраля 2012

Я пытаюсь объединить все поля в 3 таблицах.Я пробовал почти 7 запросов, каждый из которых либо загружается (очень медленно), либо выдает ошибки.

Мне нужно объединить все 3 таблицы в поле идентификатора таблицы1.Все таблицы имеют соответствующие поля идентификатора.

Это мой последний эксперимент: (выдает ошибки для повторяющихся строк)

SELECT * FROM 
(Select * FROM 
table1 as T1 JOIN 
table2 as T2 ON T1.dep_id=T2.dep_id WHERE 1) as T12
JOIN 
table3 as T3 ON T12.dep_id=T3.dep_id WHERE 1

Ответы [ 3 ]

1 голос
/ 12 февраля 2012

У вас есть столбцы с одинаковыми именами, что приводит к ошибке (T12.dep_id нечетко определено, относится ли это к оригинальному T1.dep_id или T2.dep_id?).

Вы можете использовать USING, который объединяет два столбца с одинаковыми именами в обеих сторонах объединения и объединяет их в тесте на равенство. Это удобно, когда вы не хотите дублировать столбцы в наборе результатов:

SELECT *
  FROM T1
  JOIN T2 USING(dep_id)
  JOIN T3 USING(dep_id)

Обратите внимание, что в следующем запросе у вас нет столбца с именем T1.dep_id или T2.dep_id или T3.dep_id, просто у вас есть dep_id, если вы хотите SELECT только для этого столбца.

Согласно комментариям на ответ Яхья:

SELECT *
  FROM T1
  LEFT JOIN T2 USING(dep_id)
  LEFT JOIN T3 USING(dep_id)
1 голос
/ 12 февраля 2012

try (ОБНОВЛЕНИЕ согласно комментариям от OP):

SELECT * FROM TABLE1 T1 LEFT OUTER JOIN TABLE2 T2 ON T1.DEP_ID = T2.DEP_ID LEFT OUTER JOIN TABLE3 T3 ON T1.DEP_ID = T3.DEP_ID
0 голосов
/ 12 февраля 2012

у вас есть некоторые синтаксические ошибки в вашем коде, потому что t12 не существует. Другая проблема - объявление вашей таблицы Будьте терпеливы с таблицами ID.

SELECT * FROM table1 t1,table2 t2,table3 t3 WHERE t1.dep_id=t2.id AND T2.id=T3.dep_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...