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 Un modèle de téléphone a forcément une marque et a forcément un type (slide, clapet...), non? |
+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 Le dernier critère fait tout planter. En gros, si je le met pas, tout fonctionne, si je le met, je récupère que la marque.
Ma syntaxe n'est pas bonne ?
Un grand merci à vous