Doğrudan MySQL ile bir sütunun veri listesini getiriliyor

2 Cevap php

Bize ben kedilerin çok var ninelerin çok uğraşmak zorunda varsayalım. Bir tablo granny_cat vardır:

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

ve ben anneanne 1 kedi bir listesini almak istiyorsanız, yani (php sözdizimi ile) gibi bir şey almak için

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

Ancak, sorgu

SELECT kitty_name WHERE granny_id = 1

gibi bir şey verir

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

Ben benzer bir sorgu ile iki veya daha fazla alan getirebilir gibi, ne oldukça mantıklı. Ben açıkçası ne istediklerini almak için bu dizi harita, ancak, bir (basit) mysql doğrudan almak için bir yol, ya da olup olmadığını merak ediyorum.

Teşekkürler.

2 Cevap

SELECT  GROUP_CONCAT(kitty_name) 
FROM    mytable
WHERE   granny_id = 1

bir diziye size olabilir explode virgülle ayrılmış bir listesini verecektir.

MySQL yerli dizi veri türünü desteklemiyor. PostgreSQL aşağıdakileri yapmanız mümkün olacaktır In:

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

Hangi bir yerli PHP dizisi verecekti.

Bir sarıcı kütüphane genellikle, bu idare edecek örneğin ADODb GetCol() yöntemi var

$names=$db->GetCol('SELECT kitty_name WHERE granny_id = 1');