Test sql ou php sur une non appartenance à une liste

Eléphant du PHP | 119 Messages

23 août 2007, 14:30

Bonjour,

voilà mon problème:

Code : Tout sélectionner

$sql = 'SELECT * FROM resultat, liste where liste.matricule=resultat.login order by liste.NOM'; $sql2 = 'SELECT * FROM liste order by liste.NOM';
En fait dans 'liste' j'ai tout mes utilisateurs et dans resultat j'ai ceux qui ont participé à un questionnaire.

Avec $sql je sors tout ceux qui ont répondu, mais maintenant j'aimerais faire l'inverse :/

Et là je bloque.... je fais des boucles dans tout les sens...

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

23 août 2007, 14:47

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "SQL & Bases de données".
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 193 Messages

23 août 2007, 15:33

La solution la plus simple:

Code : Tout sélectionner

SELECT * FROM liste WHERE liste.matricule NOT IN (SELECT resultat.login FROM resultat, liste where liste.matricule=resultat.login) ORDER BY liste.NOM
C'est peut-être pas optimisé, mais commençons par le début :) La sous-requête te retourne les matricules des utilisateurs qui ont participé, tu vas simplement chercher ensuite les informations des utilisateurs qui ne sont pas dans cette liste.

Eléphant du PHP | 119 Messages

23 août 2007, 15:35

en fait j'ai trouvé mon bonheur là :D

http://www.phpfrance.com/forums/voir_su ... eption.php

ce qui donne ça :

Code : Tout sélectionner

$sql = 'SELECT * FROM liste LEFT JOIN resultat ON liste.matricule=resultat.login where resultat.login IS NULL order by liste.NOM';
merci pour ton aide sinon :)

Eléphant du PHP | 193 Messages

23 août 2007, 15:43

Bé pas de quoi, l'important c'est que tu comprennes ce qui se fait et que tu saches le reproduire si tu en as de nouveau besoin! :)

Eléphant du PHP | 119 Messages

23 août 2007, 15:44

Oui exactement

merci encore

je passe en résolue :)