|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Autodidacte Inscription : avril 2011 Messages : 5 ![]() |
Bonjour,
Je suis nouvelle, ceci est mon premier post. J'espère que quelqu'un pourra m'aider à progresser J'ai créé 3 tables pour comprendre le principe des jointures Code :
Voici ce que j'ai écrit mais ca ne marche pas... Code :
$query = "SELECT t3.* FROM table3 t3 INNER JOIN table2 t2 ON t3.nom LIKE '%t2.champ2%'"; Bien cordialement, Féfé |
||
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Tu n'as pas de valeur commune entre ta table 2 et ta table3.
|
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Autodidacte Inscription : avril 2011 Messages : 5 ![]() |
Bonsoir,
Bah j'ai un "toto" (champ nom table 3) et une occurrence de "toto" (il en va de la vie de toto) dans (champ2 table2) C'est ce que je voudrais et ca marche pas malgré le like |
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Autodidacte Inscription : avril 2011 Messages : 5 ![]() |
Bonjour,
J'ai persisté ce week-end mais ne vois toujours pas comment faire Code :
$query = "SELECT t3.* FROM table3 t3 INNER JOIN table2 t2 ON t3.nom LIKE '%t2.champ2%'" KF |
|
|
00
|
|
|
#5 | ||
|
Membre habitué
![]() Inscription : mai 2004 Messages : 124 ![]() |
Bonjour,
Je ne suis pas sûr à 100% mais j'ai l'impression qu'il s'agit d'un problème de syntaxe SQL. Dans la fin de ta requête, tu mets LIKE '%t2.champ2%', comme si t2.champ2 était la chaine de caractère sur laquelle tu voulais faire ta requête (ce qui n'est pas le cas, tu souhaites restreindre sur la chaine de caractère 'toto'). Ta requête devrait plutôt être de la forme : Code :
__________________
Chen norris C/C++, C#, Java, PHP & SQL coder Web developer |
||
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Autodidacte Inscription : avril 2011 Messages : 5 ![]() |
Bonjour et merci de ton aide.
Ca fait plaisir d'avoir du soutien. J'avais déjà testé le CONCAT mais même avec ta syntaxe qui est encore mieux que la mienne testée ca ne marche pas plus ![]() C'est quoi le binz' ? Il faut des valeurs exactes pour que ca marche les jointures, ca serait étonnant... |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : mai 2004 Messages : 124 ![]() |
Le problème que je voyais, c'était que tu mettais t2.champ2 au sein d'une chaine de caractères (car entouré de guillemets doubles). Avec la méthode concat, je ne mettais aucun guillemet double autour de t2.champ2 pour qu'il soie bien interprété. En gros :
t3.nom LIKE '%t2.champ2%' est équivalent à t3.nom LIKE '%t2.champ2%' tandis que t3.nom LIKE CONCAT('%', t2.champ2, '%') est équivalent à t3.nom LIKE '%toto%' Ça me paraît bizarre que cela ne fonctionne pas. Essaye du coup de commencer par mettre en dur un LIKE '%toto%' pour voir si tu obtiens bien ce que tu souhaites.
__________________
Chen norris C/C++, C#, Java, PHP & SQL coder Web developer |
|
|
00
|
|
|
#8 | ||
|
Invité de passage
![]() Autodidacte Inscription : avril 2011 Messages : 5 ![]() |
Bonjour et merci de te soucier de mon problème.
On m'a montré où était mon erreur : Code :
Par contre, pour finir, sais-tu comment dire cherche sur table1 ou table2 avec les inner. En multipliant les INNER j'ai vu comment dire sur table 1 et table 2 mais je ne sais pas comment placer ma condition OU. Tu saurais dire ? |
||
|
|
00
|
|
|
#9 | ||
|
Membre habitué
![]() Inscription : mai 2004 Messages : 124 ![]() |
Bonjour (et désolé de mon absence
D'une manière générale, les jointures fonctionnent avec la syntaxe suivante : Code :
table1 JOIN table2 ON condition de jointure Après, tu as la possibilité de les imbriquer auquel cas je te conseille d'utiliser un maximum de parenthèses (quitte à en avoir trop, c'est toujours mieux que de ne pas en avoir assez) et de bien identer ta requête pour ne pas t'y perdre : Code :
__________________
Chen norris C/C++, C#, Java, PHP & SQL coder Web developer |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com