2012-12-14 52 views
-1

我必須展示商店的產品列表。我擁有的是商店ID,我必須將6個表關聯起來才能獲得。 我用過的查詢是正確地獲取記錄,但不是所需的數組格式。 我不知道我想要的數組格式是否可能。 我的SQL如下:使用MySQL獲取適當的數組用於PHP

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 
(
    [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 
       ) 

     ) 

) 

結果是正確的,但我想它作爲

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 
       ) 

     ) 

) 我很抱歉如果這似乎是一個愚蠢的事情,但這種數組格式將真正幫助我的事業。 謝謝大家的關注。

+0

刪除'作爲表聲明之後AK's。如果你想在沒有把結果返回給結果的情況下爲你的表命名,只需刪除'AS',你的查詢就會保持正常。 –

+1

[你有什麼嘗試?](http://www.whathaveyoutried.com) –

+0

那麼,數據肯定不會以數據庫的格式進入。它正在處理你沒有顯示的一些代碼... – deceze

回答

1

您需要自己處理數據才能將其轉換爲與此類似的格式。通常你可以遍歷行並將其轉換爲所需格式的數組。

+0

類別名稱可以不同,所以我需要將它們分類收集。 –

+0

您可以將數組設置爲模板,然後遍歷行並將數據添加到模板數組中。它解決了你的問題。 – Licson

+0

意味着它不能通過單獨操縱SQL查詢來完成? –

0

有一個很好的功能(選件)使用array_combine()

使用方法如下,你希望得到的輸出.. (IE),

得到的結果在一個數組$ 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

編輯我的答案..請檢查出來....如果它不是你期望..那麼請解釋我litle簡要..該類別如何與產品? –

+0

我將如何獲得不同陣列中的類別名稱? –