[mysql] requête sur plusieurs tables

Résolu
eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 - 11 août 2006 à 14:23
eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 - 16 août 2006 à 12:31
bonjour à tous,


je me posais une question en mysql :


lorsque je fais une requête sur 2 tables, comment faire pour avoir les enregistrements n'ayant pas de liens ?


je m'explique :


admettons que j'ai une table users contenant des utilisateurs et une table photos listant les photos de ces utilisateurs,

pour sélectionner les photos par utilisateurs, je joins ces 2 tables
avec (dans le where) : photos.id_user = users.id (par exemple)


jusque là, ça va, j'arrive à lister les photos par user.


mais comment faire pour lister les users qui n'ont pas de photos ? (sans utiliser de code php, juste une unique requête mysql)


si qqun connait, merci de me faire signe


à++

Sylvain [eax] http://www.eax.fr/

3 réponses

davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
11 août 2006 à 16:42
pour reprendre ton exemple:
SELECT * FROM photos WHERE id_user NOT IN (SELECT id FROM users)

-------------------------------------

Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
3
mechouiche42100 Messages postés 25 Date d'inscription lundi 12 juin 2006 Statut Membre Dernière intervention 11 août 2006
11 août 2006 à 14:53
L'opérateur EXCEPT ou MINUS retourne seulement les enregistrements différents de la première table à ceux de la seconde table.

SELECT tab1.nom_champ
FROM nom_table AS tab1
EXCEPT
SELECT tab2.nom_champ
FROM nom_table AS tab2
0
eax Messages postés 728 Date d'inscription jeudi 20 juin 2002 Statut Membre Dernière intervention 7 novembre 2007 2
16 août 2006 à 12:31
merci beaucoup, c'est exactement ce qu'il me fallait

Sylvain [eax] http://www.eax.fr/
0
Rejoignez-nous