Lister des champs VARCHAR en MySQL

Résolu
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

  1. Modérateur
    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
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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
              1. Pense a mettre resolu sur ton sujet sa aide a savoir ou l'on a plus besoin de venir ^^
                0