2014-02-20 95 views
0

我正在使用opencart數據庫來製作一個簡單的產品應用程序,它顯示產品的類別。如何在一個數組中添加多個表的值?

在這裏我得到了我已經通過循環的值,以一個數組,數組的問題,現在該數據庫包含3個或多個表包含在共同1 CATEGORY_ID包含ID與圖像鏈接其他包含名稱。這兩個對我很重要。這裏是代碼來了解

$sql = "SELECT * FROM oc_category"; 
$result = mysql_query($sql) or die(mysql_error()); 
while ($row = mysql_fetch_assoc($result)) { 
    $categories[] =$row; 
} 

此代碼包含CATEGORY_ID數組,category_image,我可以通過

foreach ($categories as $category){ 
    echo "the category id is $category['category_id']"; 
} 

現在的另一個表是oc_category_description其中包含類的名稱,以進一步使用。 我怎樣才能使它在一個數組中,所以我可以使用$ category ['name'];來回應它。

我已經嘗試過許多方法。其中我問一個

$sql = "SELECT * FROM oc_category, oc_category_description"; 
$result = mysql_query($sql) or die(mysql_error()); 
while ($row = mysql_fetch_assoc($result)) { 
    $categories[] =$row; 
} 

此方法處理2個表,但它減緩了應用程序,並四次

這裏顯示一個結果是什麼,我覺得每一個表有category_id,這在每個表中都很常見,我想用它來添加來自oc_category_description的名稱和其他描述。

任何想法,將不勝感激。

謝謝

回答

1

您需要GROUP BYcategory_id在查詢像

$sql = "SELECT * FROM oc_category, oc_category_description 
     GROUP BY oc_category.category_id"; 

甚至可以JOIN他們像

$sql = "SELECT * FROM oc_category 
     LEFT JOIN oc_category_description 
     ON oc_category.category_id = oc_category_description.category_id 
     GROUP BY oc_category.category_id"; 
+0

謝謝你的回答,但它是說「組中的'category'category_id'含糊不清」。爲什麼這麼說? –

+0

現在看我的編輯...我認爲它只在'oc_category'。 – Gautam3164

+0

仍然不工作它顯示循環中的相同結果,而我使用foreach語句它一次又一次地顯示相同的名稱 –

0

你必須加入該表到拿到info:

$sql = "SELECT * FROM oc_category a 
     LEFT JOIN oc_category_description b ON a.category_id = b.category_id"; 
+0

謝謝你的回答它工作正常。但我不明白你的代碼。你能否詳細說明一下。非常感謝 –

0

您必須添加免得你結束了一個笛卡爾積聯接這兩個表之間的條件:

SELECT oc_category.*, oc_category_description.name 
FROM oc_category 
jOIN oc_category_description USING (category_id) 
0

您正在使用2臺甚至瞞着到mysql如何加入他們的行列,由於這個原因,你正在變得緩慢。您可以使用以下方法2:

首先Medhod:如果確認oc_category_description表有反對oc_category相應CATEGORY_ID。

$sql = "SELECT oc.column1,oc.column2,des.column1 FROM oc_category cat, oc_category_description des where cat.category_id = des.category_id"; 

二Medhod:如果一段時間oc_category_description表有反對oc_category和一段時間沒有相應CATEGORY_ID,你想從主表像oc_category所有行。

$sql = "SELECT oc.column1,oc.column2,des.column1 FROM oc_category cat left join oc_category_description des on cat.category_id = des.category_id"; 
相關問題