Simplifier un requete avec 2 NOT IN

boninou Messages postés 59 Date d'inscription lundi 17 janvier 2005 Statut Membre Dernière intervention 16 mai 2012 - 3 mai 2006 à 17:38
Trougnouf Messages postés 1 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 10 mai 2006 - 10 mai 2006 à 19:34
Bonjour à tous !

Est il possible de simplifier cette requete ?

SELECT nom_equipe FROM equipe WHERE nom_equipe NOT IN (SELECT equipe1 FROM matchs where num_journee=1)
AND nom_equipe NOT IN (SELECT equipe2 FROM matchs where num_journee=1);


Merci de votre aide

2 réponses

Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
4 mai 2006 à 09:41
Qu'entends-tu par simplifier ?
Si tu entends gagner de la performance, je ne pense pas.
Si tu entends la rendre plus claire, je pense que ta solution est la plus claire.

J'ai ca a proposé, à la rigueur :
SELECT nom_equipe FROM equipe WHERE nom_equipe NOT IN (SELECT equipe1 FROM matchs where num_journee=1 UNION SELECT equipe2 FROM matchs where num_journee=1)

Tu veux peut-être supprimer le 'NOT IN' ?
Il faut nous dire ce que tu entends pas simplifier :)

Mindiell Software
0
Trougnouf Messages postés 1 Date d'inscription mercredi 10 mai 2006 Statut Membre Dernière intervention 10 mai 2006
10 mai 2006 à 19:34
Selon si la base de donnée est bien optimisée, NOT IN peut être très long : retourne toutes les valeurs de la table, avant de faire vérifier la condition.

Tu peux essayer avec un NOT EXISTS

SELECT nom_equipe FROM equipe AS f0
WHERE NOT EXISTS (SELECT 1 FROM matchs
WHERE num_journee = 1
AND equipe1 <> f0.nom_equipe
AND equipe2 <> f0.nom_equipe)

Est-ce plus rapide ?

Trougnouf
0
Rejoignez-nous