Problème de requête SQL


Mountain Magazin
WRInaute impliqué
WRInaute impliqué
 
Messages: 598
Inscription: 1 Oct 2004

Problème de requête SQL

Message le Sam Jan 19, 2008 22:59

Bonjour à tous,

J'espère trouver un peu d'aide, parce que je bloque sur un Pb SQL.

Je pense que c'est un truc tout bête, mais je ne trouve pas la solution.

Je vous explique :

J'ai une table, celle des membres de mon site que l'on appellera $p (table phpbb_users).
Ils sont identifiés par la clef primaire de la table, user_id

J'ai une autre table que l'on appellera $c et qui contient des données qui appartiennent aux membres.
Les données de la table $c sont rattachées à chaque membre propriétaire de ces données, en répliquant dans un des champs la clef primaire de la table $p, sous le nom id_user

Je ne sais pas si je suis clair.

Je veux récupérer les email des membres qui n'ont pas encore postés de données dans la table $c pour les exporter et les relancer.

En clair :
J'ai besoin des emails des membres $p.user_email identifiés par leur clef primaire $p.user_id, et qui n'ont pas encore postés de données dans la table $c, rattachées à eux par le champ $c.id_user

Je ne trouve pas la solution qui doit être toute bête.

Si vous avez une piste, je vous remercie beaucoup.


Bh@Mp0
WRInaute discret
WRInaute discret
 
Messages: 245
Inscription: 18 Jan 2005

Message le Sam Jan 19, 2008 23:06

Code: Tout sélectionner
SELECT P.`email` FROM P
LEFT JOIN C ON C.`id_user` = P.`user_id`
WHERE C.`id_user` IS NULL


Mountain Magazin
WRInaute impliqué
WRInaute impliqué
 
Messages: 598
Inscription: 1 Oct 2004

Message le Sam Jan 19, 2008 23:31

Ecoute, c'est parfait !!

Ça fait un bon moment que je bloquais dessus, j'ai du mal avec ces jointures, je n'arrive pas à bien saisir les tenants et les aboutissants.

Je ne sais pas comment te remercier, vraiment. C'est vraiment gentil pour le coup de main.

jcaron
WRInaute accro
WRInaute accro
 
Messages: 2678
Inscription: 13 Fév 2004

Re: Problème de requête SQL

Message le Sam Jan 19, 2008 23:32

Mountain Magazin a écrit:J'ai une autre table que l'on appellera $c et qui contient des données qui appartiennent aux membres.
Les données de la table $c sont rattachées à chaque membre propriétaire de ces données, en répliquant dans un des champs la clef primaire de la table $p, sous le nom id_user


Il y a une ligne dans $c pour chaque ligne de $p, ou uniquement pour certaines? Je penche pour la deuxième...

Mountain Magazin a écrit:J'ai besoin des emails des membres $p.user_email identifiés par leur clef primaire $p.user_id, et qui n'ont pas encore postés de données dans la table $c, rattachées à eux par le champ $c.id_user


select $p.user_email from $p where $p.user_id not in (select $c.id_user from $c)

select $p.user_email from $p where not exists (select 1 from $c where $c.id_user=$p.user_id)

Jacques.


Mountain Magazin
WRInaute impliqué
WRInaute impliqué
 
Messages: 598
Inscription: 1 Oct 2004

Message le Sam Jan 19, 2008 23:38

Bonjour Jacques,

Je viens d'avoir la réponse dans le post d'avant. C'était pour certaines uniquement, effectivement la 2ème solution.

Merci bcp pour le coup de main.


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: itry et 0 invités