Buscando diretamente uma lista dos dados de uma coluna com MySQL
Pergunta
Suponhamos que eu tenha que lidar com muitas avós que têm muitos gatos. Eu tenho uma mesa Granny_cat:
granny_id | kitty_name
--------------------
1 Kizzy
1 Jimmy
1 Katty
2 Georges
2 Albert
3 Panther
E eu quero recuperar uma lista de gatos da vovó 1, ou seja, para obter algo como (com a sintaxe do PHP)
array("Kizzy","Jimmy","Katty")
No entanto, a consulta
SELECT kitty_name WHERE granny_id = 1
retorna algo como
array
(
array('kitty_name' => "Kizzy"),
array('kitty_name' => "Jimmy"),
array('kitty_name' => "Katty")
)
O que é bastante lógico, pois posso buscar dois ou mais campos com uma consulta semelhante. Obviamente, posso mapear essa matriz para obter o que quero, no entanto, me pergunto se existe uma maneira (simples) de obtê -la diretamente do MySQL, ou não.
Obrigado.
Solução
SELECT GROUP_CONCAT(kitty_name)
FROM mytable
WHERE granny_id = 1
darei a você a lista delimitada por vírgula que você pode explode
em uma matriz.
MySQL
não suporta dados de dados de matriz nativa. Dentro PostgreSQL
Você seria capaz de fazer o seguinte:
SELECT ARRAY
(
SELECT kitty_name
FROM mytable
WHERE granny_id = 1
) AS kitties
, o que te daria um nativo PHP
variedade.