JOIN LEFT {MYSQL}
Résolu/Fermé
devMan
devMan
- Messages postés
- 74
- Date d'inscription
- jeudi 10 décembre 2009
- Statut
- Membre
- Dernière intervention
- 16 septembre 2010
devMan
- Messages postés
- 74
- Date d'inscription
- jeudi 10 décembre 2009
- Statut
- Membre
- Dernière intervention
- 16 septembre 2010
5 réponses
chuka
31 déc. 2009 à 16:15
- Messages postés
- 965
- Date d'inscription
- samedi 11 octobre 2008
- Statut
- Membre
- Dernière intervention
- 29 juillet 2010
31 déc. 2009 à 16:15
Salut,
Pour la premiere question, je dirai à priori non...S'il y a difference, cela sera au niveau du cout de la requete et de l'optmiseur je pense..
Pour la deuxieme:
Etant donné que :
table.id =2 and table1.id =3 sera toujours faux dans la même requête...tu n'aura jamais de lignes...
@+
Pour la premiere question, je dirai à priori non...S'il y a difference, cela sera au niveau du cout de la requete et de l'optmiseur je pense..
Pour la deuxieme:
Etant donné que :
table.id =2 and table1.id =3 sera toujours faux dans la même requête...tu n'aura jamais de lignes...
@+
chuka
31 déc. 2009 à 16:25
- Messages postés
- 965
- Date d'inscription
- samedi 11 octobre 2008
- Statut
- Membre
- Dernière intervention
- 29 juillet 2010
31 déc. 2009 à 16:25
Par exemple,
id=3:
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =VRAI
condition2 = ( table.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" )=FAUX
condition1 and condition2=VRAI AND FAUX=FAUX
idem pour id=2...
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =FAUX
condition2 = ( table.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" )=VRAI
condition1 and condition2=FAUX AND VRAI=FAUX
id=3:
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =VRAI
condition2 = ( table.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" )=FAUX
condition1 and condition2=VRAI AND FAUX=FAUX
idem pour id=2...
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =FAUX
condition2 = ( table.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" )=VRAI
condition1 and condition2=FAUX AND VRAI=FAUX
devMan
31 déc. 2009 à 16:30
- Messages postés
- 74
- Date d'inscription
- jeudi 10 décembre 2009
- Statut
- Membre
- Dernière intervention
- 16 septembre 2010
31 déc. 2009 à 16:30
chez moi les deux condition sont vrai
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =VRAI
condition2 = ( table.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" ) = VRAI
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =VRAI
condition2 = ( table.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" ) = VRAI
chuka
31 déc. 2009 à 16:36
- Messages postés
- 965
- Date d'inscription
- samedi 11 octobre 2008
- Statut
- Membre
- Dernière intervention
- 29 juillet 2010
31 déc. 2009 à 16:36
la table avec le nom 'table' elle sort d'où dans ta requte??
devMan
31 déc. 2009 à 17:10
- Messages postés
- 74
- Date d'inscription
- jeudi 10 décembre 2009
- Statut
- Membre
- Dernière intervention
- 16 septembre 2010
31 déc. 2009 à 17:10
Re,
juste une erreur de tapage :
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =VRAI
condition2 = ( table1.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" ) = VRAI
juste une erreur de tapage :
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" ) =VRAI
condition2 = ( table1.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" ) = VRAI
chuka
1 janv. 2010 à 14:38
- Messages postés
- 965
- Date d'inscription
- samedi 11 octobre 2008
- Statut
- Membre
- Dernière intervention
- 29 juillet 2010
1 janv. 2010 à 14:38
Salut,
tu ne peux pas avoir les 2 conditions vrai dans la meme requete...
Dans la requete, quand on va balayer les id:
si table1.id=2, alors ta clause where:
condition2=vrai
condition1=faux->car tu veux que table1.id=3 donc FAUX
donc un 'and' (un ET logique) vrai ET faux va etre faux...
de meme quand table1.id=3...
Si c'est un OR (OU Logique),vrai OU faux=vrai donc tu as des resultats...
Bonne année!!
@+
tu ne peux pas avoir les 2 conditions vrai dans la meme requete...
Dans la requete, quand on va balayer les id:
si table1.id=2, alors ta clause where:
condition2=vrai
condition1=faux->car tu veux que table1.id=3 donc FAUX
donc un 'and' (un ET logique) vrai ET faux va etre faux...
de meme quand table1.id=3...
Si c'est un OR (OU Logique),vrai OU faux=vrai donc tu as des resultats...
Bonne année!!
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
devMan
5 janv. 2010 à 17:22
- Messages postés
- 74
- Date d'inscription
- jeudi 10 décembre 2009
- Statut
- Membre
- Dernière intervention
- 16 septembre 2010
5 janv. 2010 à 17:22
Re,
merci de votre reponse,
j'ai trouvé une solution....c pas parfait ..... mais ça marche.
merci de votre reponse,
j'ai trouvé une solution....c pas parfait ..... mais ça marche.
SELECT `maTable`.* FROM `maTable` Where ( id in (SELECT ID FROM `table1` WHERE (table1.champs1 =3 AND table1.champs2 = "test" AND table1.champs3 = "test")) and id in (SELECT ID FROM `table1` WHERE (table1.champs1 =2 AND table1.champs2 = "essai" AND table1.champs3 = "essai")) )
31 déc. 2009 à 16:22
pr le premiere c bon
pr le 2eme j'ai pas compris pourquoi tu as dis table.id =2 and table1.id =3 sera toujours faux dans la même requête
il y a deux condition ds la clause where
condition1 = ( table1.id =3 AND table1.champs = "test" AND table1.champs1 = "test" )
condition2 = ( table.id =2 AND table1.champs = "valeur1" AND table1.champs1 = "valeur2" )