Bonjour je suis sous mysql et j'ai un problème de jointure, indépendant, je pense de la base. C'est pourquoi je met ce message ici.
J'ai deux tables :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE `modes_livraisons` ( `mode_livraison_id` int(11) NOT NULL auto_increment, `mode_livraison_libelle` varchar(50) NOT NULL default '', `mode_livraison_cout` decimal(10,2) NOT NULL default '0.00', `mode_livraison_langue` int(11) NOT NULL default '0', PRIMARY KEY (`mode_livraison_id`) ) ; INSERT INTO `modes_livraisons` VALUES (1, 'mode de livraison1', '12.00', 1); INSERT INTO `modes_livraisons` VALUES (2, 'mode de livraison2', '20.00', 1); INSERT INTO `modes_livraisons` VALUES (3, 'mode de livraison3', '30.00', 1); INSERT INTO `modes_livraisons` VALUES (4, 'mode livraison anglais', '11.00', 2);
Ceci me permet d'avoir des modes de livraison et d'associer des modes de livraisons à des produits (J'ai juste mis la table qui relie les produis aux modes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 CREATE TABLE produits_livraisons ( produit_livraison_livraison int(11) NOT NULL default '0', produit_livraison_produit int(11) NOT NULL default '0', PRIMARY KEY (produit_livraison_livraison,produit_livraison_produit) ) ; INSERT INTO produits_livraisons VALUES (1, 28); INSERT INTO produits_livraisons VALUES (1, 29); INSERT INTO produits_livraisons VALUES (1, 30); INSERT INTO produits_livraisons VALUES (1, 31); INSERT INTO produits_livraisons VALUES (2, 29); INSERT INTO produits_livraisons VALUES (3, 28); INSERT INTO produits_livraisons VALUES (3, 31);
Ce que je souhaiterais obtenir c'est si un produit est lié ou pas à un mode de livraison :
Voila quelque chose dans le genre qui me liste l'ensemble des modes de livraison et qui me dit si le produit y est associé ou non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Pour le produit 28 : Mode_livraison_id mode_livraison_libelle produit_livraison_id -------------------- ------------------------- ---------------------- 1 Mode de livraison 1 28 2 Mode de livraison 2 NULL 3 Mode de livraison 3 28
J'ai essayé avec une jointure externe mais ca ne me retourne pas le bon résultat.
Ca ne me retourne que deux lignes et ca ne me dit pas que pour le mode 2 il n'y a rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT `mode_livraison_id` , `mode_livraison_libelle`, produit_livraison_livraison, produit_livraison_produit FROM `modes_livraisons` LEFT JOIN produits_livraisons ON produit_livraison_livraison = mode_livraison_id WHERE produit_livraison_produit = 28 OR produit_livraison_produit IS NULL
Merci
PS : Si le sujet n'est pas à sa place je suis dsl
Partager