2012-09-14 5 views
4

이 번 만 foo6 값마다 상위 키 상이한 것을 알 수 초래할 조인내부 배열이 배열 찾고

Array 
(
    [0] => Array 
     (
      [foo1] => Apple 
      [foo2] => Banana 
      [foo3] => Carrots 
      [foo4] => Deer 
      [foo5] => Feather 
      [foo6] => Grapes 
     ) 
    [1] => Array 
     (
      [foo1] => Apple 
      [foo2] => Banana 
      [foo3] => Carrots 
      [foo4] => Deer 
      [foo5] => Feather 
      [foo6] => Heater 
     ) 
    [2] => Array 
     (
      [foo1] => Apple 
      [foo2] => Banana 
      [foo3] => Carrots 
      [foo4] => Deer 
      [foo5] => Feather 
      [foo6] => Quail Eggs 
     ) 
) 

질의 :

SELECT 
    tpp.page_master_properties_style AS foo1, 
    tpp.page_master_properties_bg AS foo2, 
    tpp.page_master_properties_data AS foo3, 
    tpp.page_properties_style AS foo4, 
    tpp.page_properties_bg AS foo5, 
    tpp.page_properties_data AS foo6, 
    tobj.objects_script AS foo6 
FROM templates t 
    INNER JOIN category tc 
    ON t.category_id = tc.category_id 
    INNER JOIN page_properties tpp 
    ON t.templates_id = tpp.templates_id 
    INNER JOIN objects tobj 
    ON t.templates_id = tobj.templates_id 
WHERE 
    t.templates_id = ? 

? = 1

이것 테이블 개체templates_id에 대한 복수 항목이 있습니다 :

내가 궁금하네요
+--------------+----------------+-----------------+ 
| objects_id | templates_id | objects_script | 
+--------------+----------------+-----------------+ 
|  1  |  1  |  Grapes  | 
|  2  |  1  |  Heater  | 
|  3  |  1  |  Quail Eggs | 
|  4  |  2  |  Milk  | 
|  5  |  3  |  Lemon  | 
+--------------+----------------+-----------------+ 

가 어떤 내장 단수 배열로 foo6를 결합 할 수 있습니다 MySQL의 기능 예는이 같은 결과를 달성하기 위해 :

Array 
(
    [foo1] => Apple 
    [foo2] => Banana 
    [foo3] => Carrots 
    [foo4] => Deer 
    [foo5] => Feather 
    [foo6] => Array 
      (
       [0] => Grapes 
       [1] => Heater 
       [2] => Quail Eggs 
      ) 
) 

답변

4

이것은에 group_concat에 대한 작업처럼 보이는을 MySQL의 무기 :

SELECT 
    tpp.page_master_properties_style AS foo1, 
    tpp.page_master_properties_bg AS foo2, 
    tpp.page_master_properties_data AS foo3, 
    tpp.page_properties_style AS foo4, 
    tpp.page_properties_bg AS foo5, 
    group_concat(tpp.page_properties_data) AS foo6, 
    tobj.objects_script AS foo6 
FROM templates t 
    INNER JOIN category tc 
    ON t.category_id = tc.category_id 
    INNER JOIN page_properties tpp 
    ON t.templates_id = tpp.templates_id 
    INNER JOIN objects tobj 
    ON t.templates_id = tobj.templates_id 
WHERE 
    t.templates_id = ? 
GROUP BY 
    tpp.page_master_properties_style AS foo1, 
    tpp.page_master_properties_bg AS foo2, 
    tpp.page_master_properties_data AS foo3, 
    tpp.page_properties_style AS foo4, 
    tpp.page_properties_bg AS foo5 

이 의지 그룹의 모든 행 tpp.page_properties_data에서 함께 데이터의 유일한 행에와 쉼표로 분할 - 어떤 당신은 쉽게다음 수 데이터 세트를 반복 할 때배열로.

+0

감사! 그러나 이것은'page_properties_data'에 대한 새로운 컬럼을 만들어야 혼란 스럽습니다. –

+0

@LeandroGarcia 아니, 전혀. 쿼리를 실행하고 PHP에서 단일 열을 자체 배열로 분해합니다 (각 행에 대한 더 큰 배열의 요소로) – Fluffeh