Question

Supposons que je dois traiter avec beaucoup de grands-mères qui ont beaucoup de chats. J'ai une table granny_cat:

granny_id | kitty_name
--------------------
1           Kizzy
1           Jimmy
1           Katty
2           Georges
2           Albert
3           Panther

et je veux récupérer une liste de mamie 1 chat de, à savoir pour obtenir quelque chose comme (avec la syntaxe php)

array("Kizzy","Jimmy","Katty")

Toutefois, la requête

SELECT kitty_name WHERE granny_id = 1

retourne quelque chose comme

array
(
   array('kitty_name' => "Kizzy"),
   array('kitty_name' => "Jimmy"),
   array('kitty_name' => "Katty")
)

ce qui est tout à fait logique, que je peux aller chercher deux ou plusieurs champs avec une requête similaire. Je peux évidemment la carte ce tableau pour obtenir ce que je veux, mais je me demande s'il y a un (simple) façon d'obtenir directement de MySQL, ou non.

Merci.

Était-ce utile?

La solution

SELECT  GROUP_CONCAT(kitty_name) 
FROM    mytable
WHERE   granny_id = 1

vous donnera la liste délimitée par des virgules que vous pouvez explode dans un tableau.

MySQL ne supporte pas un tableau natif type de données. Dans PostgreSQL vous seriez en mesure de faire ce qui suit:

SELECT  ARRAY
        (
        SELECT  kitty_name
        FROM    mytable
        WHERE   granny_id = 1
        ) AS kitties

, qui vous donnera un tableau de PHP natif.

Autres conseils

Une bibliothèque d'emballage sera généralement gérer cela, par exemple Adodb a getCol () méthode :

$names=$db->GetCol('SELECT kitty_name WHERE granny_id = 1');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top