Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2732 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySQL : vérification de syntaxe de double jointure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MySQL : vérification de syntaxe de double jointure

n°2011984
vanquishV1​2
se coucher tard nuit
Posté le 27-07-2010 à 08:39:09  profilanswer
 

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  

Code :
  1. SELECT blabla FROM table1 LEFT JOIN table2 ON table2.marque = table1.id LEFT JOIN table3 ON table3.id = table2.type


 
Et quand je veux un modèle en particulier :

Code :
  1. SELECT blabla FROM table1 LEFT JOIN table2 ON table2.marque = table1.id LEFT JOIN table3 ON table3.id = table2.type WHERE table1.marque = 'Apple' AND table2.modele = 'iPhone 3G' AND table3.type = 'Monobloc'


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  :cry: 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 :bounce:

mood
Publicité
Posté le 27-07-2010 à 08:39:09  profilanswer
 

n°2012327
rufo
Pas me confondre avec Lycos!
Posté le 28-07-2010 à 09:47:30  profilanswer
 

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 :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2012506
vanquishV1​2
se coucher tard nuit
Posté le 28-07-2010 à 15:32:28  profilanswer
 

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.

n°2012539
rufo
Pas me confondre avec Lycos!
Posté le 28-07-2010 à 16:05:20  profilanswer
 

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.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2012545
vanquishV1​2
se coucher tard nuit
Posté le 28-07-2010 à 16:14:32  profilanswer
 

Oui c'est bien ce que je veux!

n°2012549
rufo
Pas me confondre avec Lycos!
Posté le 28-07-2010 à 16:19:58  profilanswer
 

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?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2012558
Dj YeLL
$question = $to_be || !$to_be;
Posté le 28-07-2010 à 16:26:11  profilanswer
 

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


---------------
Gamertag: CoteBlack YeLL
n°2012582
vanquishV1​2
se coucher tard nuit
Posté le 28-07-2010 à 16:54:30  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  MySQL : vérification de syntaxe de double jointure

 

Sujets relatifs
Comment inserer dans mysql un champ date multi-valeursProbleme pour convertir une chaine en variable double
[JDBC]Serveur Mysql localconnection ODBC MySQL avec machine virtuelle
Recherche du bon pattern regex avec mysql[connexion MySQL serveur windows]PHP ne peut charger l'extension mysql
double fleche de redimensionnement des fenetresjointure avec 3 champs ?
Problème avec une requête mysql en PHPRemettre à zéro la liste des résultats MySQL
Plus de sujets relatifs à : MySQL : vérification de syntaxe de double jointure


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR