Lister des champs VARCHAR en MySQL

Résolu/Fermé
riders974 Messages postés 114 Date d'inscription dimanche 14 octobre 2007 Statut Membre Dernière intervention 19 mai 2012 - 1 sept. 2010 à 14:07
Klytorh Messages postés 25 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 22 novembre 2011 - 6 sept. 2010 à 16:06
Bonjour,

J'aimerais pouvoir lister des champs VARCHAMP en MYSQL et je ne sais pas si c'est possible. C'est peut être flou mais je vais vous expliquer avec un exemple. Imaginon, j'ai une table comme ci-dessous:

villes
idn    -     idnref    -   nom
-------------------------------
1            1             Toulouse
2            1             Agen
3            2             Paris
4            2             Cergy
5            2             Nanterre


Si j'effectue une requete SELECT *, ??? AS villes FROM villes WHERE idnref=2 GROUP BY idnref ORDER BY nom
J'aimerais avoir une sorte de commande à la place de ??? qui permet de regrouper les villes de cette manière: Cergy, Nanterre, Paris
Je ne sais pas si ça existe!
Je suis ouvert à tout autre méthode, bien sure en évitant de passer par du PHP!

Merci pour vos réponses!

7 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
Modifié par lami20j le 1/09/2010 à 14:43
Salut,

Et comme ça ne te conviens pas? (Je n'ai pas testé)

SELECT *FROM villes WHERE idnref=2 AND (nom='Cergy' OR nom='Nanterre' OR nom='Paris') GROUP BY idnref ORDER BY nom 


GNU/Linux:Linux is Not Ubuntu! Quel linux choisir ne veut pas dire votre Distribution préférée,
106485010510997108
0
riders974 Messages postés 114 Date d'inscription dimanche 14 octobre 2007 Statut Membre Dernière intervention 19 mai 2012 8
1 sept. 2010 à 14:49
non car la table villes est censé être alimenté dynamiquement et donc les valeurs sont inconnues et iensure le filtre agit seulement sur idnref et non pas nom aussi!

Ce que je voulais dire qui n'a pas été bien compris peut être c'est lors de la récupération des valeurs du résultats, j'aimerais récupérer une variable "villes" qui possède les valeurs "Cergy, Nanterre, Paris" et d'autre si il y a d'autre occurrence avec idnref=2!
0
il faudrait que tu expliques un peu plus: en tout cas ce que j'ai remarqué dans ta question c'est qu'il est inutile de faire un "groupe by idnref" alors que tu as la condition "where idnref=2"...
;)
0
riders974 Messages postés 114 Date d'inscription dimanche 14 octobre 2007 Statut Membre Dernière intervention 19 mai 2012 8
1 sept. 2010 à 16:32
Non, il faut absolument que je groupe car mois ce que je veux au final c'est avoir une ligne:

Imaginons j'excute cette ligne suivante:
SELECT * FROM villes WHERE idnref=2 GROUP BY idnref ORDER BY nom

J'aurais le résultats suivant:
4            2             Cergy


Alors que mois j'aimerais avoir un résulat plutôt de cette forme
4            2             Cergy, Nanterre, Paris

Avec toutes les villes du même groupe listés!

J'espère que c'est plus clair!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ah ok j'ai compris:
d'abord tu ne pourra pas afficher la colonne id des villes puisqu'il est différent pour chaque ville:

essaies avec la commande group_concat():

SELECT idnref, GROUP_CONCAT(nom) FROM villes GROUP BY idnref;
0
riders974 Messages postés 114 Date d'inscription dimanche 14 octobre 2007 Statut Membre Dernière intervention 19 mai 2012 8
1 sept. 2010 à 16:51
oui, je sais mais aprés il y a un traitement PHP et le champ idn j'en ai pas besoin!

En tout cas merci, c'est exactement ce que je cherchais! sauf qu'il me colle tout mais un petit str_replace() et ça tourne nikel!

merci!
0
Klytorh Messages postés 25 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 22 novembre 2011
6 sept. 2010 à 16:06
Pense a mettre resolu sur ton sujet sa aide a savoir ou l'on a plus besoin de venir ^^
0