MySQL : vérification de syntaxe de double jointure - SQL/NoSQL - Programmation
Marsh Posté le 28-07-2010 à 09:47:30
Question bête : pourquoi tu fais un left join et non un inner join vue que les relations entre les tables 1 et 2 ainsi que 2 et 3 sont de type 1-n et non 0-n
Marsh Posté le 28-07-2010 à 15:32:28
J'ai réglé mon souci qui venait des données mais je n'ai pas compris ta remarque ? SI je remplace par des inner, ça ne fonctionne plus.
Marsh Posté le 28-07-2010 à 16:05:20
un left join suppose que le champ servant à la jointure de la table de gauche n'a pas forcément de correspondance dans le champ de la table de droite.
EX :
Table 1
ID Valeur
1 Toto
2 Titi
3 Tata
Table 2
ID Type IDt1
1 TP1 1
2 TP1 1
3 TP2 3
IDt1 sert à la jointure entre la table 1 et al table 2. Si je fais une requête avec inner join, j'aurais 2 lignes pour 'Toto' et une ligne pour 'Tata' mais rien pour 'Titi'. Avec un left join, t'auras 4 lignes, les 3 mêmes que précédemment et une ligne pour 'Titi' avec la valeur NULL pour les valeurs de la table 2.
Marsh Posté le 28-07-2010 à 16:19:58
Vue la structure de tes 3 tables, j'ai des doutes sur le bien fondé d'un left join Un modèle de téléphone a forcément une marque et a forcément un type (slide, clapet...), non?
Marsh Posté le 28-07-2010 à 16:26:11
rufo a écrit : Vue la structure de tes 3 tables, j'ai des doutes sur le bien fondé d'un left join |
+1
Marsh Posté le 28-07-2010 à 16:54:30
Non, ce sont des données d'exemple Mes données sont différentes et un modèle n'a pas forcément de type.
Marsh Posté le 27-07-2010 à 08:39:09
Bonjour,
Je crois que j'ai un gros souci avec les requêtes jointes.
J'ai trois tables à joindre.
TABLE 1 contient un id et les entrées suivantes :
- Apple
- Sony
- Nokia
- Samsung
- HTC
- Blackberry
TABLE 2 contient un id, l'id de la marque, l'id du type de portable (voir table 3) et les entrées suivantes :
- iPhone 3G
- iPhone 3GS
- iPhone 3GS NB
- iPhone 4G
- N63
- 3710
- etc.
TABLE 3 contient un id et :
- Slide
- Monobloc
- Clapet
Je les joints comment ces trois tables ?
Car je fais
Et quand je veux un modèle en particulier :
Je fais une requête avec autant de conditions au cas par exemple où il y aurait deux versions de ce téléphone : l'une monobloc et l'autre à clapet par exemple.
Et bien ça ne fonctionne pas
Ma syntaxe n'est pas bonne ?
Un grand merci à vous