Выберите поля из нескольких таблиц и используйте OUTER JOIN на одной таблице - PullRequest
1 голос
/ 01 августа 2011

Мой запрос выбирает несколько полей из 4 таблиц, и мне нужно добавить OUTER JOIN или LEFT OUTER JOIN, чтобы сравнить значения из другой таблицы.

SELECT *, table1.name, table2.wage, table3.shift, table4.vacation
FROM table1, table2, table3, table4 OUTER JOIN table5 ON table1.name = table5.position
WHERE table1.name = table2.name
AND table2.wage = table3.wage

Это всего лишь пример, но как мне заставить его работать, кажется, работает, если у меня есть только одна таблица в предложении FROM.

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Используйте синтаксис ANSI для всех ваших объединений, например

SELECT table1.name, table2.wage, table3.shift, table4.vacation,
  table5.someDateTimeField
FROM table1
INNER JOIN table2 ON table1.name = table2.name
INNER JOIN table3 ON table2.wage = table3.wage
INNER JOIN table4 ON something = table4.something -- can't see this one in your example
LEFT JOIN table5 ON table1.name = table5.position
WHERE someArbitraryFilter BETWEEN 3 AND 7;

Кроме того, ваше предложение SELECT выглядит неправильно. Я не знаю, какой * вы ищете, и вам не хватает запятых

0 голосов
/ 01 августа 2011

Попробуйте использовать явные JOIN вместо неявных:

SELECT table1.name, table2.wage, table3.shift, table4.vacation
FROM table1
JOIN table2 ON table1.name = table2.name
JOIN table3 ON table2.wage = table3.wage
JOIN table4 ON ??
LEFT JOIN table5 ON table1.name = table5.position

плюс, похоже, вам не хватает условия для соединения с таблицей 4.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...