unir 2 entité en 1

Eléphanteau du PHP | 29 Messages

18 oct. 2007, 11:36

rebonjour a tous,

j'ai une petite question a vous poser..

je fais cette requette :

Code : Tout sélectionner

SELECT DISTINCT menu.admin_id, menu_diet.admin_id FROM `menu` , menu_diet LIMIT 0 , 30
et j'obtiens ca :

Image

et moi ce que j'aimerai avoir c'est:

admin_id
kerlochj
chapalan
lucasjea
lartigua

Merci pour vos réponses

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 oct. 2007, 11:55

Salut,

Le principe général, si je l'ai bien compris, est de récupérer une liste dé-doublonnée d'admin provenant de 2 tables différentes ?

Dans ce cas, la 1ère étape est de sélectionner les admins dans chacune des tables. Pour cela, il te faut 2 requêtes :

Code : Tout sélectionner

SELECT admin_id FROM menu
et

Code : Tout sélectionner

SELECT admin_id FROM menu_diet
Ensuite, pour disposer des résultats de ces 2 requêtes en un seul jeu de résultat, il faut les unir

Code : Tout sélectionner

SELECT admin_id FROM ( SELECT admin_id FROM menu UNION SELECT admin_id FROM menu_diet) AS admins
La clause UNION permet de prendre tous les résultats de la 1ere requête et de les ajouter aux résultats de la seconde requête (attention, sensible aux noms des colonnes ;) )

Finalement, pour ne pas avoir de doublons dans les résultats, tu fait comme si tu n'avais qu'une seule table, tu utiliser DISTINCT

Code : Tout sélectionner

SELECT DISTINCT admin_id FROM ( SELECT admin_id FROM menu UNION SELECT admin_id FROM menu_diet) as admins
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer