Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Administration
Administration Forum d'entraide sur l'administration de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/04/2006, 12h21   #1
Membre du Club
 
Développeur informatique
Inscription : août 2004
Messages : 136
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 136
Points : 52
Points : 52
Envoyer un message via MSN à Zen_Fou
Par défaut [MySQL 4.0.17] utilisation de LEFT JOIN 2 fois

bonjour,

avec cette version de MySQL, je ne peux faire de requete imbriqué. je me suis pris la tete un moment sur une requete qui n'est pas spécialement compliqué mais mes connaissances SQL me manque.

TABLE:

abonne(id,etat,nom, prenom, dateinscription....)
parrainage(idparrain, idfilleul) (c'est une récursive ou un utilisateur parraine un autre utilisateur)
message(id_message)
envoi(id_envoi)//on sauvegarde ici les messages envoyés aux utilisateurs.

REQUETE VOULU
j'aimerai savoir quel sont les utilisateurs qui:
1.ne sont pas filleul
2.n'ont pa recu de message dont l'id_message = 1
3.ont l'état = 2
4.dont la date d'inscription date de plus de 7 jours

ma difficulté est le 1 et 2 en meme temps.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
 
SELECT *
FROM abonne 
LEFT JOIN parrainage 
ON abonne.id_abonne = parrainage.idfilleul_parrainage
RIGHT JOIN envoi
ON abonne.id_abonne = envoi.idabonne_envoi
WHERE parrainage.idparrain_parrainage IS NULL 
AND envoi.idabonne_envoi IS NULL
AND etat_abonne = 2 
AND dateinscription_abonne <= date_add(now(), interval - 7 DAY)
merci pour votre aide
Zen_Fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 12h47   #2
Nouveau Membre du Club
 
Étudiant
Inscription : février 2005
Messages : 48
Détails du profil
Informations personnelles :
Âge : 27

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2005
Messages : 48
Points : 28
Points : 28
Bonjour,
tu dois pouvoir faire un INNER JOIN (bon je sais ce n'est pas très recommander) mais ça fait ce que tu veux faire normalement

Code :
1
2
3
4
5
6
7
8
9
 
SELECT *
FROM abonne 
INNER JOIN parrainage,envoi
ON abonne.id_abonne = parrainage.idfilleul_parrainage AND abonne.id_abonne = envoi.idabonne_envoi
WHERE parrainage.idparrain_parrainage IS NULL 
AND envoi.idabonne_envoi IS NULL
AND abonne.etat_abonne = 2 
AND abonne.dateinscription_abonne <= date_add(now(), interval - 7 DAY)
(désolé si la syntaxe est pas bonne mais je répond vite fait avant de repartir au travail.)
kei-kun41 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h07   #3
Membre du Club
 
Développeur informatique
Inscription : août 2004
Messages : 136
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 136
Points : 52
Points : 52
Envoyer un message via MSN à Zen_Fou
Citation:
Code :
1
2
3
4
5
6
7
8
SELECT *
FROM abonne 
INNER JOIN parrainage,envoi
ON abonne.id_abonne = parrainage.idfilleul_parrainage AND abonne.id_abonne = envoi.idabonne_envoi
WHERE parrainage.idparrain_parrainage IS NULL 
AND envoi.idabonne_envoi IS NULL
AND abonne.etat_abonne = 2 
AND abonne.dateinscription_abonne <= date_add(now(), interval - 7 DAY)
c'est pas passé.

voila une requete que je veux faire
Code :
1
2
3
4
5
6
7
8
 
SELECT *
FROM abonne 
LEFT JOIN parrainage 
ON abonne.id_abonne = parrainage.idfilleul_parrainage 
WHERE parrainage.idparrain_parrainage IS NULL 
AND abonne.etat_abonne = 2 
AND abonne.dateinscription_abonne <= date_add(now(), interval - 7 DAY
mais avec en plus
Code :
1
2
3
4
5
6
7
8
SELECT  * 
FROM abonne
LEFT JOIN envoi 
ON abonne.id_abonne = envoi.idabonne_envoi
WHERE envoi.idabonne_envoi IS  NULL  
AND abonne.etat_abonne =2 
AND abonne.dateparrainage_abonne <= date_add(now(), INTERVAL -7 DAY) 
il faudrai faire une fusion de ces 2 requetes
Zen_Fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h10   #4
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Salut,

Il suffit de mettre les LEFT JOIN à la suite :
SELECT ... LEFT JOIN ... ON ... LEFT JOIN ... ON ... WHERE ...
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2006, 13h55   #5
Membre du Club
 
Développeur informatique
Inscription : août 2004
Messages : 136
Détails du profil
Informations personnelles :
Âge : 30

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 136
Points : 52
Points : 52
Envoyer un message via MSN à Zen_Fou
merci, pourquoi j'ai pas essayé ??!!
Zen_Fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h44.


 
 
 
 
Partenaires

Hébergement Web