Directement aller chercher une liste à partir des données d'une colonne avec MySQL
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.
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');