14-11-2010, 11:59 AM
(14-11-2010, 01:04 AM)niahoo a écrit : Marrant, le left-join marche pas...
pitetre comme ça ?
SELECT BA.niveaux, LB.id, LB.nom, LB.description
FROM Liste_batiments LB
LEFT JOIN Batiments_acquis BA ON LB.id = BA.id_batiments AND BA.id_membres =38
ceci me donne :
(14-11-2010, 02:15 AM)_who a écrit : Z'êtes des artistes les caïds. Vous voyez pas que vous demandez à sélectionner les lignes où l'identifiant du membre vaut 38, que cette valeur est stockée dans la table Batiments_acquis et que donc la ligne que vous voulez afficher n'est pas concernée ?Dans l'ordre :
La clause LEFT marche très bien. Essayez ça pour voir :
SELECT
`batiments_acquis`.`niveaux`,
`liste_batiments`.`id`,
`liste_batiments`.`nom`,
`liste_batiments`.`description`
FROM `liste_batiments`
INNER JOIN `batiments_acquis`
ON `batiments_acquis`.`id_batiments` = `liste_batiments`.`id`
SELECT
`batiments_acquis`.`niveaux`,
`liste_batiments`.`id`,
`liste_batiments`.`nom`,
`liste_batiments`.`description`
FROM `liste_batiments`
LEFT JOIN `batiments_acquis`
ON `batiments_acquis`.`id_batiments` = `liste_batiments`.`id`
La dernière proposition de niahoo va fonctionner. Le seul truc, c'est que sémantiquement il est mieux venu de ne pas mettre ce genre de conditions dans la clause ON d'une jointure mais il y a des exceptions
et
Comment tu as fait alors que tu n'a pas sélectionner un membre ? :heuuu:
(14-11-2010, 10:40 AM)pascal a écrit : erf, oui. Dans ce cas, il faut aussi mettre NULL :Résultat :
SELECT BA.niveaux, LB.id, LB.nom, LB.description
FROM Liste_batiments LB
LEFT JOIN Batiments_acquis BA ON LB.id = BA.id_batiments
WHERE BA.id_membres =38 OR BA.id_membres IS NULL
++
Pascal
Merci à tous ! Je doit prendre celle de pascal ou de _who?