Bonjour,
je me cogne à une requête qui parait assez simple mais que je n'arrive pas à réaliser.
J'ai 2 tables :
Product
--------
id_product = PK
...
Package_Language
------------------
id_product
id_language
pk = id_product + id_language
Ma requete est tout simplement de sortir la liste des id_product
qui sont en FRA et en NLD.
Une autre ceux qui ont FRA et PAS NLD
Et une troisième, ceux qui ont NLD et PAS FRA
J'ai essayé de faire ceci :
FRA + NLD
=>2281 id_product FRA + NLD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select distinct p.id_product from package_language t1 inner join package_language t2 with(no lock) on t1.id_product = t2.id_product inner join product p with(nolock) on p.id_product = t1.id_product where t1.id_language = 'FRA' and t2.id_language = 'NLD' and p.id_product_type = 1
FRA et PAS NLD
=>13650 id_product FRA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select distinct p.id_product from package_language t1 inner join package_language t2 with(no lock) on t1.id_product = t2.id_product inner join product p with(nolock) on p.id_product = t1.id_product where t1.id_language = 'FRA' and t2.id_anguage <> 'NLD' and p.id_product_type = 1
NLD et PAS FRA
=>8171 id_product NLD
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select distinct p.id_product from package_language t1 inner join package_language t2 with(no lock) on t1.id_product = t2.id_product inner join product p with(nolock) on p.id_product = t1.id_product where t1.id_language <>'FRA' and t2.id_anguage = 'NLD' and p.id_product_type = 1
Je sais que c'est faux, soit d'un point de vue logique, soit d'un point de vue syntaxique car si je prends le total d'id_product différents dans la table package_language pour un id_product_type = 1 je trouve
Résultat : 19651 id_product différents
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select distinct t1.id_product from package_language t1 inner join package_language t2 with(nolock) on t1.id_product = t2.id_product inner join product p with(nolock) on p.id_product = t1.id_product where p.id_product_type= 1
Donc FRA (sans NLD) + NLD (sans FRA) + FRA/NLD = 24102 ALors que je n'ai que 19 651 id_product différents dans ma table ...
Donc c'est clair que mes requêtes ne fonctionnent pas
Pouvez vous éclaircir ma lanterne svp?
Merci d'avance![]()
Partager