Valeur non présente dans plusieurs colonnes
Posté : 07 mars 2007, 17:26
par orgerix
Bonjour
J'ai une table avec dedans des informations sur des personnes et une autre contenant des équipes, de ce style responsable,membre1,membre2...
Y a t il un moyen par fonction SQL de prendre dans la table des personnes celles qui ne sont dans aucune équipe, c'est à dire qu'elle ne sont présent dans aucune colonne de la deuxième table.
S'il n'y avait qu'une colonne ou la personne pouvait être inscrite, je pourrais m'en sortir avec OUTER JOIN, mais la je ne vois pas...
Posté : 07 mars 2007, 17:37
par mere-teresa
Posté : 07 mars 2007, 18:00
par orgerix
Meric beaucoup.
En revanche, j'ai essayé de faire sur la console SQL un join externe simple :
Code : Tout sélectionner
SELECT S.nom, G.responsable
FROM membre S
LEFT OUTER JOIN groupe G ON S.nom = G.responsable
WHERE G.responsable IS NULL
LIMIT 0 , 30
mais ca me fait un message d'erreur :
Code : Tout sélectionner
#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '='
Posté : 07 mars 2007, 18:50
par orgerix
C'est bon, j'ai trouvé.
En revanche, quant à mon problème, je ne vois que comme solution de faire 7 jointure exterieur avec la même table avec un colonne différente à chaque fois.
Est ce la meilleur méthode ?
Code : Tout sélectionner
SELECT S.nom
FROM membre S
LEFT OUTER JOIN groupe G0 ON S.nom = G0.responsable
LEFT OUTER JOIN groupe G1 ON S.nom = G1.membre1
LEFT OUTER JOIN groupe G2 ON S.nom = G2.membre2
LEFT OUTER JOIN groupe G3 ON S.nom = G3.membre3
LEFT OUTER JOIN groupe G4 ON S.nom = G4.membre4
LEFT OUTER JOIN groupe G5 ON S.nom = G5.membre5
LEFT OUTER JOIN groupe G6 ON S.nom = G6.membre6
LEFT OUTER JOIN groupe G7 ON S.nom = G7.membre7
WHERE G0.responsable IS NULL
AND G1.membre1 IS NULL
AND G2.membre2 IS NULL
AND G3.membre3 IS NULL
AND G4.membre4 IS NULL
AND G5.membre5 IS NULL
AND G6.membre6 IS NULL
AND G7.membre7 IS NULL
Posté : 07 mars 2007, 19:08
par Ryle
Est ce la meilleur méthode ?
Euh.... je pense pas non...
Le mieux serait peut être de revoir ton modèle de données... une table intermédiaire permettant de savoir quel membre appartient à quelle équipe le semblerait beaucoup plus adapté. Il suffirait alors d'interroger la table et de vérifier si l'id du joueur est présent ou pas pour savoir s'il est associée à une ou des équipes

(voire si un joueur ne peut appartenir qu'à une seule équipe, simplement ajouter un champ idEquipe dans la table des joueurs et vérifier que celui-ci est renseigné ou pas

)
Posté : 07 mars 2007, 19:11
par orgerix
Oui je vois.
IL va donc falloire que je revois tous mes scripts pour renseigner cette colonne
