Разница между ВЫБРАТЬ * ОТ - PullRequest
0 голосов
/ 16 марта 2019

В чем разница между этими двумя SQL-запросами?

SELECT 
    articles.idarticles, articles.titre, articles.contenu,
    categories.titre AS categorie 
FROM 
    articles, categories 
WHERE 
    idarticles = 2 ;

А этот

SELECT 
    articles.idarticles, articles.titre, articles.contenu,
    categories.titre AS categorie 
FROM 
    articles 
LEFT JOIN 
    categories ON category_id = categories.idCategories 
WHERE 
    idarticles = 2 ;

Результат: для первого:

запрос один

Результат для второго запроса:

запрос два

Почему первый возвращает один результат, второй возвращает 2 строки?

1 Ответ

0 голосов
/ 16 марта 2019

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

SELECT articles.idarticles, articles.titre, articles.contenu,categories.titre AS categorie FROM articles, categories WHERE idarticles=2 ;

Но во втором запросе

SELECT articles.idarticles, articles.titre, articles.contenu,categories.titre AS categorie FROM articles LEFT JOIN categories ON category_id=categories.idCategories WHERE idarticles=2 ;

вы сделали левое соединение с статьями и категориями , где есть 2 записи для idarticles = 2 в таблицы категорий , соответствующие записям статьи данных.и так как левое соединение извлекает все записи первой таблицы и соответствующие записи второй таблицы.Вы получаете две записи.

. Для справки вы можете перейти по ссылке ниже.

Оставить соединение

...