[PHP MySQL] Lister données de plusieurs champ

Fermé
paul - 4 févr. 2008 à 10:20
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 - 4 févr. 2008 à 11:03
Bonjour,

J'ai une base de données avec plusieurs table et champs.

Dans une table, je souhaite récupérer les données de 4 champs différents (Noms de personne) pour les lister par ordre alphabétique et en supprimant les doublons. Je sais très bien le faire sur un champ mais pas sur plus (à moins de faire 4 requêtes à la suite mais les doublons ne sont pas supprimés et les données pas classées par ordre alphabétique.

Exemple de résultat attendu :

Antoine (qui se trouvait dans le champ 2)
Camille (qui se trouvait dans le champ 1)
Dominique (qui se trouvait dans le champ 4)
Laury (qui se trouvait dans le champ 1)
Paul (qui se trouvait dans le champ 3)
Xavier (qui se trouvait dans le champ 3)

Merci d'avance, en espérant avoir été assez clair.
paul
A voir également:

3 réponses

tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
4 févr. 2008 à 10:33
Je pense que vous pouvez utiliser l'operateur:

not in

dans votre clause:

Where

Et puis vous utilisez l'operateur:

Union

entre plusieurs:

select

Un peu de concentration et vous y arriverez :)
0
Merci, je ne connaissais pas Union. Ni not in, d'ailleurs je ne trouve aucune documentation sur ce dernier.

Je vais essayé avec union. Il semblerait qu'on puisse mettre un mot clé DISTINCT pour union. Du coup à quoi sert not in ?

J'aurai un truc du genre :

(SELECT DISTINCT champ1 FROM nom_de_table) UNION [DISTINCT](SELECT DISTINCT champ2 FROM nom_de_table)UNION (SELECT DISTINCT champ3 FROM nom_de_table)UNION (SELECT DISTINCT champ4 FROM nom_de_table);

Je testerai ce soir.
Merci
0
tarek_dotzero Messages postés 817 Date d'inscription jeudi 19 juillet 2007 Statut Membre Dernière intervention 12 avril 2022 120
4 févr. 2008 à 11:03
"Not in" est en effet la negation de "in" qui retourne "vrai" si une valeur se trouve dans une liste, et parmi les liste le resultat d'une requete SQL (select).

Par exemple, j'ai créé une petite bdd de teste:

Test(cle, observation)

j'ai inserer queleque valeurs et puis j'ai testé:

SELECT *
FROM Test
WHERE observation in ('un', 'deux');

seules les lignes qui ont observation 'un' ou 'deux' apparaissent.

On peut même mettre

SELECT *
FROM Test
WHERE N in
(select N from Test where observation = 'deux');


Et ça marche!!
0