Мне нужно показать все автомобили из BRAND_CAR, даже если в них нет машины - PullRequest
0 голосов
/ 18 июня 2019

Я создал этот запрос и не могу показать все марки автомобиля, даже если на столе для транспортных средств создано 0 автомобилей.

SELECT BRAND_CAR_NAME, COUNT(*)
FROM brand b, vehicule v, model mo
WHERE v.ID_MODEL = mo.ID_MODEL
AND mo.ID_BRAND = b.ID_BRAND
GROUP BY BRAND_CAR_NAME

что он мне показывает:

Brand 1 :   1
Brand 3 :   1 
Brand 4 :   1
Brand 6 :   1

Я хочучтобы увидеть:

            Brand 1 : 1
            Brand 3 : 1 
            Brand 4 : 1
            Brand 6 : 1
            brand 2 : 0
            brand 5 : 0
            brand 7 : 0
SELECT NOM_MARQUE, IFNULL(v.ID_VOITURE)
FROM marque m, voiture v, model mo
WHERE v.ID_MODEL = mo.ID_MODEL
AND mo.ID_MARQUE = m.ID_MARQUE
GROUP BY NOM_MARQUE

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Используйте Left Join, чтобы получить результат, попробуйте следующий запрос

SELECT b.BRAND_CAR_NAME, COUNT(*) 
FROM brand b
LEFT JOIN model mo ON b.ID_BRAND = mo.ID_BRAND
INNER JOIN vehicule v ON mo.ID_MODEL = v.ID_MODEL
GROUP BY b.BRAND_CAR_NAME;
0 голосов
/ 18 июня 2019

Вы можете использовать LEFT JOIN особенно перед vehicule таблицей с SUM( IFNULL(SIGN(v.ID_MODEL),0) )

( Я думаю, что еще лучше использовать таблицу LEFT JOIN перед model, снова пропустить записи для model таблица )

SELECT BRAND_CAR_NAME, SUM( IFNULL(SIGN(v.ID_MODEL),0) ) as BRAND_COUNT
  FROM brand b
  LEFT JOIN model mo ON mo.ID_BRAND = b.ID_BRAND
  LEFT JOIN vehicule v ON v.ID_MODEL = mo.ID_MODEL
 GROUP BY BRAND_CAR_NAME;

Демо

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