1

たくさんの猫を飼っているたくさんのおばあちゃんに対処しなければならないとしましょう。私はテーブル granny_cat を持っています:

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

そして、おばあちゃん1匹の猫のリストを取得したい、つまり(php構文で)のようなものを取得したい

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

ただし、クエリ

SELECT kitty_name WHERE granny_id = 1

のようなものを返します

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

同様のクエリで 2 つ以上のフィールドを取得できるため、非常に論理的です。もちろん、この配列をマップして必要なものを取得できますが、mysql から直接取得する (簡単な) 方法があるかどうか疑問に思います。

ありがとう。

4

2 に答える 2

1
SELECT  GROUP_CONCAT(kitty_name) 
FROM    mytable
WHERE   granny_id = 1

explode配列に入れることができるコンマ区切りのリストが表示されます。

MySQLネイティブ配列データ型をサポートしていません。で次PostgreSQLのことができるようになります。

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

、ネイティブPHP配列を提供します。

于 2009-08-18T17:59:17.280 に答える
0

通常、ラッパー ライブラリがこれを処理します。たとえば、ADODbにはGetCol()メソッドがあります。

$names=$db->GetCol('SELECT kitty_name WHERE granny_id = 1');
于 2009-08-18T17:57:12.590 に答える