Предложение SQL FROM с использованием n> 1 таблиц - PullRequest
0 голосов
/ 25 января 2012

Если вы добавите более одной таблицы в предложение FROM (в запросе), как это повлияет на набор результатов?Сначала он выбирает из первой таблицы, затем из второй, а затем создает объединение (т. Е. Затрагивается только пространство строк?) Или он действительно выполняет что-то вроде объединения (т. Е. Расширяет пространство столбцов)?И когда вы используете несколько таблиц в предложении FROM, фильтрует ли предложение WHERE оба набора результатов?

1 Ответ

2 голосов
/ 25 января 2012

При указании двух таблиц в предложении FROM будет выполнено JOIN.Затем вы можете использовать предложение WHERE, чтобы указать условия JOIN.Если вам это не удастся, вы получите декартово произведение (каждая строка в первой таблице без разбора присоединяется к каждой строке во второй).

Код будет выглядеть примерно так:

SELECT a.*, b.*
FROM table1 a, table2 b
WHERE a.id = b.id

Однако я всегда стараюсь явно указывать свои JOIN (с ключевыми словами JOIN и ON).Это совершенно ясно (для следующего разработчика) о том, что вы пытаетесь сделать.Вот тот же JOIN, но явно указанный:

SELECT a.*, b.*
FROM table1 a
INNER JOIN table2 b ON b.id = a.id

Обратите внимание, что теперь мне не нужно предложение WHERE.Этот метод также помогает избежать генерации непреднамеренного декартова произведения (если вы случайно забыли предложение WHERE), поскольку ON указано явно.

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