Là, il y a comme un gros problème.
Ce résultat n'est pas possible, compte tenu des éléments que tu nous as fournis.
En effet, la requête doit renvoyer pour m1 les seuls lignes de la table menu pour lesquels il existe au moins une ligne dans m2 pour laquelle m2.id_menu_dir = m1.id_menu, c'est à dire les lignes pour lesquelles id_menu vaut soit 1, soit 2, soit 3.
Or dans le résultat que tu nous montres, c'est exactement l'inverse !
On va "décomposer" la requête pour savoir où se trouve le problème.
Est-ce que tu peux nous donner le résultat de ces trois requêtes ?
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from articles where reference = 10
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from menu where id_menu = 7
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select * from menu where id_menu = 2
Le première doit renvoyer les données de l'article 10, "carrelage novabell en 30x30" dont ref_menu qui vaut 7
La deuxième va chercher le menu correspondant (id = 7), soit "carrelage terre cuite anti-dérapant", dont id_menu_dir vaut 2
La troisième va chercher le menu correspondant (id = 2), soit "CARRELAGE EXTERIEUR"
Tatayo.
P.S. à moins que le SGBD utilisé soit perturbé par les null... Quel est-il ?
Partager