Это то же самое, что JOIN в запросе MYSQL? - PullRequest
2 голосов
/ 20 сентября 2011

Вот мой запрос:

Это выглядит эффективно? Есть ли преимущество использования JOIN? Или это то же самое?

$query_Recordset2 = 
"SELECT cute_news.category, cute_news.id, cute_story.short, cute_story.post_id, cute_news.date, cute_news.url, cute_news.title 
FROM cute_news, cute_story 
WHERE cute_news.id = cute_story.post_id AND category LIKE '10%' 
ORDER BY date DESC LIMIT 0,35";

Ответы [ 3 ]

6 голосов
/ 20 сентября 2011

Этот вопрос может быть дубликатом этого .

Неявные СОЕДИНЕНИЯ не несут намерения и поэтому менее читаемы.

Ваш запрос приведет к точно таким же результатам, как:

SELECT cute_news.category, cute_news.id, cute_story.short, cute_story.post_id, cute_news.date, cute_news.url, cute_news.title 
FROM cute_news
 INNER JOIN cute_story ON cute_story.post = cute_news.id
WHERE category LIKE '10%' 
ORDER BY date DESC LIMIT 0,35

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

3 голосов
/ 20 сентября 2011

В «неявной нотации объединения» просто перечислены таблицы для объединения (в предложении FROM инструкции SELECT) с использованием запятых для их разделения.Таким образом, он задает перекрестное соединение, и предложение WHERE может применять дополнительные предикаты фильтра (которые функционируют аналогично предикатам соединения в явной записи)

из wikipedia

Другими словами, это то же самое

2 голосов
/ 20 сентября 2011

Если вы имеете в виду предложение FROM, имеющее несколько таблиц, разделенных запятыми, тогда да, оно в основном совпадает с INNER JOIN.

Однако это старый синтаксис;предпочтительнее использовать INNER JOIN, что является более стандартным.

Кроме того, проблема со старым синтаксисом состоит в том, что, комбинируя поля объединения с остальной частью предложения WHERE, можно сделатьзапрос трудно читается, а в некоторых случаях вызывает дополнительную работу для синтаксического анализатора.Гораздо лучше явно указать отношения в предложении ON для каждого JOIN.

...