Je suit structure de la tableSuggérer requête optimisée à l'aide de 4 tables (RIGHT JOIN INNER v/JOIN & AYANT)
- table_country ==> country_id (PK) | pays | statut
- table_department ==> numéro_de_part (PK) | département | country_id (FK)
- table_province ==> province_id (PK) | province | department_id (FK)
- table_district ==> ID_district (PK) | quartier | province_id (FK)
REMARQUE: tous les moteurs de tables sont InnoDB
Un pays peut avoir plusieurs département, un département peut avoir plusieurs provinces et une province peut avoir district multiple. Maintenant, je dois rechercher uniquement les pays qui ont au moins un district
J'ai écrit les 2 ci-dessous des requêtes SQL, dans mon cas, les deux requêtes renvoient les mêmes résultats .... s'il vous plaît décrire la différence entre ces requêtes
L'utilisation d'un RIGHT JOIN
:
SELECT c.country_id as id, c.country as name
FROM table_country c
RIGHT JOIN table_department d ON d.country_id=c.country_id
RIGHT JOIN table_province p ON p.department_id=d.department_id
RIGHT JOIN table_district ds ON ds.province_id=p.province_id
WHERE c.status='Active' GROUP BY (c.country_id)
en utilisant INNER JOIN
et HAVING
clause:
SELECT COUNT(ds.district), c.country_id as id, c.country as name
FROM table_country c
INNER JOIN table_department d ON d.country_id = c.country_id
INNER JOIN table_province p ON p.department_id = d.department_id
INNER JOIN table_district ds ON ds.province_id = p.province_id
WHERE c.status='Active'
GROUP BY (c.country_id)
HAVING COUNT(ds.district)>0
S'il vous plaît dites-moi où ces deux requêtes font la différence dans les résultats et lequel dois-je utiliser ou dois-je utiliser une requête différente?
Merci à l'avance
La deuxième requête semble manquer un 'GROUP BY country_id, country'. L'INNER JOIN rend le 'HAVING' redondant. – pascal
@pascal AFAIK Dans la jointure interne, nous obtiendrons des enregistrements correspondants uniquement lorsque la jointure droite ou gauche vous donne également des enregistrements NULL. – JustLearn
@pascal Quelle est la redondance de l'utilisation de INNER JOIN & HAVING ensemble, suggérons un exemple – JustLearn