[MySQL 5.0.18] Syntaxe du "NOT IN" modifiée?

Statut
N'est pas ouverte pour d'autres réponses.

SkYlEsS

Elite
Vaut mieux utiliser les jointures ... mais dans ton cas, je ne sais pas si elles serviraient :roll:

Ceci dit, tu as trouvé ton bonheur là ? :proud:

C'est à dire un code qui fonctionne aussi bien en local que sur ton serveur OVH !) :dead:
 
1er
OP
k o D

k o D

Elite
SkYlEsS a dit:
Vaut mieux utiliser les jointures ... mais dans ton cas, je ne sais pas si elles serviraient :roll:

Ceci dit, tu as trouvé ton bonheur là ? :proud:

C'est à dire un code qui fonctionne aussi bien en local que sur ton serveur OVH !) :dead:
Oui çà fonctionne en local et chez OVH.
Bah oui par jointure, c'est fort long... le NOT IN est quand même méchamment bien pratique!
 

Bingo

Beer Addict
k o D a dit:
Oui çà fonctionne en local et chez OVH.
Bah oui par jointure, c'est fort long... le NOT IN est quand même méchamment bien pratique!
Long à écrire, mais ça doit pas être plus long à exécuter.
Sur ta première table, tu dois avoir un index sur idMembre (si c'est une clé primaire il y a déjà un index), et un index sur acces.
Sur ta deuxième table, tu dois avoir un index sur idMembre, et un index de deux colonnes sur idMembre et idLineup.

D'ailleurs, tout bien réfléchis tu peux faire ça sans UNION :

SELECT m.idMembre, m.pseudo
FROM membre AS m LEFT JOIN membreTeam AS mt1
ON (m.idMembre = mt1.idMembre)
LEFT JOIN membreTeam AS mt2
ON (m.idMembre = mt2.idMembre AND mt2.idLineUp='$_POST[idLineUp])
LEFT JOIN membreTeam AS mt3
ON (m.idMembre = mt3.idMembre)
WHERE (m.acces = 1 AND mt1.idMembre IS NULL)
OR (mt2.idMembre IS NULL AND mt3.idMembre IS NOT NULL);

Ca marche comme ça ?
 
1er
OP
k o D

k o D

Elite
Bingo a dit:
Long à écrire, mais ça doit pas être plus long à exécuter.
Sur ta première table, tu dois avoir un index sur idMembre (si c'est une clé primaire il y a déjà un index), et un index sur acces.
Sur ta deuxième table, tu dois avoir un index sur idMembre, et un index de deux colonnes sur idMembre et idLineup.

D'ailleurs, tout bien réfléchis tu peux faire ça sans UNION :

SELECT m.idMembre, m.pseudo
FROM membre AS m LEFT JOIN membreTeam AS mt1
ON (m.idMembre = mt1.idMembre)
LEFT JOIN membreTeam AS mt2
ON (m.idMembre = mt2.idMembre AND mt2.idLineUp='$_POST[idLineUp])
LEFT JOIN membreTeam AS mt3
ON (m.idMembre = mt3.idMembre)
WHERE (m.acces = 1 AND mt1.idMembre IS NULL)
OR (mt2.idMembre IS NULL AND mt3.idMembre IS NOT NULL);

Ca marche comme ça ?
A 1ère vue oui.
Maintenant je n'ai pas trop le temps de tester vu que je pars en week-end ce soir mais à 1ère vue çà donne bien le bon résultat.

Merci beaucoup en tout cas :)
 

Bingo

Beer Addict
Y a pas de quoi, ça me change un peu du SQL de mon boulot, ça détend ! :D
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut