Нужно ли вам соединять таблицы с полями «ON» или вы можете просто приравнять их в предложении where? - PullRequest
1 голос
/ 03 августа 2011

Мы выполняли запросы множеством разных способов, и запросы работали, когда мы выполняли

SELECT t.thing FROM table1 t JOIN table2 s WHERE t.something = s.somethingelse AND t.something = 1

, и он работал со всеми запросами, кроме одного.Этот один запрос зависал навсегда и вылетал из строя на нашем сервере, но он, очевидно, работает, если мы делаем это следующим образом:

SELECT t.thing FROM table1 t JOIN table2 s ON t.something = s.somethingelse WHERE t.something = 1

Мы пытаемся выяснить, связана ли проблема со структурой запроса или из-за некоторого поврежденияв учетной записи, которую мы пытаемся запросить.

Первый синтаксис правильный?Спасибо.

Ответы [ 3 ]

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

Существуют различные форматы ANSI. Вы можете использовать

Select ...
   from tbl1 join tbl2 on tbl1.fld = tbl2.fld

ИЛИ

select ...
   from tbl1, tbl2
   where tbl1.fld = tbl2.fld...

Явное объединение - это более распространенный формат, в котором вы явно показываете разработчикам, кактаблицы связаны без учета критериев фильтрации.

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

Ваш первый синтаксис пропущен.Когда вы присоединяетесь, обязательно указывайте ON, в каких полях происходит соединение.

Я бы порекомендовал использовать JOIN ON поверх WHERE, чтобы выполнить ваши объединения.прочитайте, поскольку он не будет загрязнен предложением join where.2) Ваш раздел присоединения легче читать и понимать.

Мы все согласны с тем, что оба метода работают, но лучше присоединиться благодаря тезисам.

мои 2 цента

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

Вам необходимо использовать предложение ON. Хотя вы также можете объединить запятыми, например: SELECT * FROM table1, table2;

Надеюсь, это поможет!

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