문제

고양이가 많은 할머니를 다루어야한다고 가정 해 봅시다. 테이블 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")
)

비슷한 쿼리로 두 개 이상의 필드를 가져올 수 있으므로 매우 논리적입니다. 나는 분명히이 배열을 내가 원하는 것을 얻기 위해 매핑 할 수 있지만, MySQL에서 직접 얻을 수있는 (간단한) 방법이 있는지 궁금합니다.

감사.

도움이 되었습니까?

해결책

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 정렬.

다른 팁

래퍼 라이브러리는 일반적으로이를 처리합니다 adodb has the getcol () 방법:

$names=$db->GetCol('SELECT kitty_name WHERE granny_id = 1');
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top