Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 23/08/2011, 21h02   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2006
Messages : 29
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 29
Points : 10
Points : 10
Par défaut outer join ou left join

Bonjour, voici le contexte.
table résultat, local.ya_xselres, contient les codes des membres sélectionnés
table maitre, ma, contient les infos des membres
table cotisation, mb, contient les cotisations payées par les membres

Alors à partir de la table résultat, je veux avoir les infos du membre et les paiements.
Si un membre a 3 paiements, il y aura 3 lignes pour lui, c'est correct.
J'ai essayé cela, entre autres mais MySql n'aime pas.
"Erreur 42S02 Table local.mb n'existe pas"

Code :
1
2
3
4
5
SELECT * 
FROM cumul.fmr1ma ma, gest2009.fmr1mab mb
LEFT JOIN mb ON ma.perma = mb.perma
WHERE ma.perma IN (SELECT perma FROM LOCAL.ya_xselres)
ORDER BY ma.perma, mb.period
Qu'est-ce qui manque ?

yves
Yves Archambault est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/08/2011, 09h11   #2
Modérateur
 
Avatar de sevyc64
 
Homme Yves
Développeur informatique
Inscription : janvier 2007
Messages : 3 880
Détails du profil
Informations personnelles :
Nom : Homme Yves
Âge : 39
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : janvier 2007
Messages : 3 880
Points : 7 654
Points : 7 654
Citation:
Qu'est-ce qui manque ?
C'est dit dans le message d'erreur :
Citation:
Table local.mb n'existe pas
Alors pour commencer abandonne cette habitude de faire des jointures implicites FROM cumul.fmr1ma ma, gest2009.fmr1mab mb. Je sais que toutes les écoles enseignent comme ça, c'est probablement parce que les prof n'ont jamais eu à debugger des grosses requêtes SQL

Une jointure se fait explicitement avec le mot clé JOIN et ses qualificatifs LEFT, RIGHT, etc ...

Et en plus tu mélanges n'importe comment jointure implicite et explicite

Donc on reprend :

Code :
1
2
3
4
5
SELECT * 
FROM cumul.fmr1ma ma 
LEFT JOIN gest2009.fmr1mab mb ON ma.perma = mb.perma
WHERE ma.perma IN (SELECT perma FROM LOCAL.ya_xselres)
ORDER BY ma.perma, mb.period
__________________
Sevyc64 --- Le partage est notre force

NON AU LANGAGE SMS & FAUTES VOLONTAIRES SUR LES FORUMS
sevyc64 est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h49.


 
 
 
 
Partenaires

Hébergement Web