2012-12-14 3 views
-1

상점에 대한 제품 목록을 보여줘야합니다. 내가 갖고있는 상점 ID는 6 테이블을 연관시켜야합니다. 쿼리를 사용하여 올바르게 레코드를 가져 왔지만 원하는 배열 형식으로 가져 오지 못했습니다. 원하는 배열 형식이 가능한지 여부를 모르겠습니다. 미안 해요 ) 나에게PHP를위한 MySQL을 사용하여 적절한 배열 얻기

Array 
(
    [0] => Array 
     (
      [KR] => Array 
       (
        [knifename] => xxx 
        [id] => xxx 
        [knifecode] => xxx 
       ) 

      [CAT] => Array 
       (
        [categoryname] => xxx 
       ) 

     ) 

    [1] => Array 
     (
      [KR] => Array 
       (
        [knifename] => xxx 
        [id] => xxx 
        [knifecode] => xxx 
       ) 

      [CAT] => Array 
       (
        [categoryname] => xxx 
       ) 

     ) 

) 

결과가 정확한지으로 배열을 제공

SELECT DISTINCT KR.knifename,KR.id,CAT.categoryname,KR.knifecode FROM assocknives AS AK 
              INNER JOIN kniferegisters AS KR ON KR.id = AK.kniferegister_id 
              INNER JOIN categories AS CAT ON CAT.id = KR.sub_category_id 
              INNER JOIN stores AS STR ON STR.id = AK.store_id            
              INNER JOIN brands AS BRND ON BRND.id = AK.brand_id 
              INNER JOIN assocknifeprices AS AKP ON AKP.assocknife_id = AK.id 
              WHERE AK.store_id='.$storeId.' AND BRND.is_active ="1" AND STR.is_active ="1" 

을하지만 난

Array 
(
    [categoryname1] => Array 
     (
      [0] => Array 
       (
        [knifename] => xxx 
        [id] => xxx 
        [knifecode] => xxx 
       ) 

      [1] => Array 
       (     
        [knifename] => xxx 
        [id] => xxx 
        [knifecode] => xxx 
       ) 

     ) 

    [categoryname2] => Array 
     (
      [0] => Array 
       (
        [knifename] => xxx 
        [id] => xxx 
        [knifecode] => xxx 
       ) 

      [1] => Array 
       (     
        [knifename] => xxx 
        [id] => xxx 
        [knifecode] => xxx 
       ) 

     ) 

로 싶어 : 내 SQL은 다음과 같다 이 바보 같은 것 같다면이 배열 형식은 정말 내 원인을 도울 것입니다. 모두에게 감사드립니다.

+0

키 범주와도 값 배열과 범주를 통과하는 데 필요한'테이블 선언 후 AK's AS. 결과에서 처리기를 다시 가져 오지 않고 테이블의 이름을 지정하려면 'AS'만 제거하면 쿼리가 계속 작동합니다. –

+1

[무엇을 시도해 봤습니까?] (http://www.whathaveyoutried.com) –

+0

글쎄, 데이터는 분명히 데이터베이스의 형식이 아닙니다. 그것은 당신이 보여주는 코드에 의해 처리되고 있습니다 ... – deceze

답변

1

이와 비슷한 형식으로 직접 데이터를 처리해야합니다. 일반적으로 행을 순환하여 원하는 형식의 배열로 바꿀 수 있습니다.

+0

카테고리 이름이 다를 수 있으므로 카테고리를 현명하게 수집해야합니다. –

+0

배열을 템플릿으로 설정 한 다음 행을 반복하고 데이터를 템플릿 배열에 추가 할 수 있습니다. 그것은 당신의 문제를 해결합니다. – Licson

+0

SQL 쿼리만으로 조작 할 수 없습니까? –

0

하나 개의 배열로 결과를 가져 오기, 하나 개의 좋은 기능 (옵션)이 예상대로 다음과 같이 array_combine()

사용하여 (예) .. 출력을 얻을 수있다 $ arrayValue 다음과 같이 배열 키 arrayKey로 하나 개의 새로운 배열을 생성,

$arrayValue = SQL RESULT 
    $arrayKey = array('categoryname1','categoryname2',....) 

    $expectedArrayResult = array_combine($arrayKey, $arrayValue).. 

    print_r($expectedArrayResult); 

다음과 같은 기능으로 사용할 의미 해당 제품에 부착해야하는 경우 ,

당신이 제거 키와

function combine_assoc($map, $values) { 
    $output = array(); 
    foreach($map as $key => $values) { 
    if(!array_key_exists($key, $value)) return FALSE; 
    $output[$value] = $values[$key]; 
    } 
    return $output; 
} 
+0

카테고리 이름을 제품과 정확히 관련시키지 않습니다. –

+0

편집 내 대답 .. 제발 그것을 밖으로 확인하십시오 .... 만약 당신이 기대하지 .. 그럼 제발 날 간단히 설명해주십시오 .. 카테고리는 제품과 관련이 어떻게? –

+0

다른 배열에서 카테고리 이름을 어떻게 얻을 수 있습니까? –