2012-10-28 6 views
0

저는 꽤 오랫동안 프로젝트를 진행 해왔습니다. 이제는 부모가 그룹화 한 모든 행을 반환하는 MySQL 쿼리를 생각할 수없는 시점에 도달했습니다.여러 행을 선택하고 ID로 그룹화하십시오.

+----+-----------+------+ 
| id | parent_id | name | 
+----+-----------+------+ 

8 개 PARENT_ID 값 (1-8) 및 각 PARENT_ID (160 계) 20 개 ID 값이있다 :이 I 가진 테이블 구조이다. 나는 모든 범주를 검색하고 PARENT_ID별로 그룹화하고 방법은 이것이다 :

$categories = array(); 

for ($i = 1; $i <= 8; $i++) { 
    $query = $this->db->query(" 
     SELECT id, name 
     FROM categories 
     WHERE parent_id = {$i} 
     ORDER BY name 
    "); 
    $categories[$i] = $query->result(); 
} 

return $categories; 

함께 나를 위해 이런 짓을 했을까 MySQL의 쿼리를 넣어하는 방법이 있나요?

이 작동하지 않습니다

SELECT id, name 
FROM categories 
GROUP BY parent_id 
ORDER BY name 
+0

예상되는 결과는 무엇입니까? –

+0

왜'GROUP BY parent_id'가 작동하지 않을까요? 원하는 결과 세트가 정확히 무엇입니까? 귀하의 요구 사항이'부모가 그룹화 한 모든 행을 반환합니다. '는 parent_id의 GROUP BY가 수행하는 것입니다. – nawfal

+0

위에 게시 한 쿼리는 모든 parent_id에 대해 하나의 카테고리 만 반환합니다. 예상되는 출력은 8 개의 값 (부모)의 배열입니다. 그것들 각각은 20 대 배열 (카테고리)의 부모가 될 것입니다. –

답변

0

난 당신이 PARENT_ID에 따라 결과 집합에 의해 주문하는 것입니다 필요 생각합니다. 모든 부모의 각 ID를 나열해야하는 경우에는 그룹을 요구하지 않습니다.

SELECT id, name 
FROM categories 
ORDER BY parent_id 
+0

@ user726049 답변을 확인하고 알려주세요. 나는 당신이 게시 한 링크를 많이 만들 수 없었다. 말로 우리에게 설명 할 수 있다면 더 좋을 것입니다. – nawfal

+0

영어가 모국어가 아니므로 달성하려는 내용을 명확하게 설명 할 수 없습니다. 카테고리는 상위 ID로 그룹화해야하므로 작동하지 않습니다. 이미 가지고있는 코드를 계속 사용할 것입니다. –

+0

@ user726049 한 쪽에서는 카테고리를 parent_id로 그룹화해야한다고 말합니다. 이 경우 parent_id 당 하나의 레코드가있는 레코드 세트 만 있습니다. 하지만 다른면에서는 각 parent_id에 대해 모든 id-name 콤보가 필요하다고 말합니다. 어떻게 가능합니까? – nawfal

관련 문제