2013-02-08 143 views
0

三個表我有兩個表的查詢,我需要加入多一個,所以我可以得到對應順序的產品型號。加入一個SQL查詢

我有什麼到目前爲止

$sql = "SELECT 
    o.order_id, 
    o.name, 
    o.value, 
    GROUP_CONCAT(o.order_id, o.name, o.value SEPARATOR ',') AS Options 
FROM `order_option` AS o 
LEFT JOIN `order` AS oo on o.order_id = oo.order_id 
where oo.order_status_id = 2 
group by o.order_id"; 

mysql_query("SET NAMES 'utf8'"); 
$result = mysql_query($sql); 
while($row = mysql_fetch_assoc($result)) 
{ 
$options=$row['Options']; 
print "$options"; 

    PRINT "<br>-------------------<br>"; 
} 

現在,我有一個包含每個訂單的產品模型中的第三個表。該表被稱爲「order_product」,它有兩個字段「的order_id」和「模型」(每個訂單一個記錄)。

我有什麼,現在的結果是現在

ID,選項1:Valude,選項2:值

我想做到的是

ID,型號,選項1:Valude,選項2:值

在機型應該來自第三表「order_product」

任何建議高度讚賞。 感謝

+0

你知道爲什麼你使用'LEFT JOIN'加入現有的兩個表,對不對?因爲加入三個表心不是太大的diffrence的......但我覺得你也可以去這裏CROSSJOIN – Najzero

回答

0

這應該服務宗旨:

SELECT 
o.order_id, 
order_product.model, 
o.name, 
o.value, 
GROUP_CONCAT(o.order_id, o.name, o.value SEPARATOR ',') AS Options 
FROM `order_option` AS o 
LEFT JOIN `order` AS oo on o.order_id = oo.order_id 
LEFT JOIN order_product ON o.order_id = order_product.order_id 
where oo.order_status_id = 2 
group by o.order_id 
+0

它不工作,但我不得不order_product.model添加到GROUP_CONCAT以及 – lStoilov

+0

的只有我留下的問題是,現在每個選項(每個選項是在一個單獨的行每個訂單ID)我有ID和打印兩次模型。任何想法如何讀取第二個打印,但仍然打印選項。這就是我的意思。現在我有 ID,型號,選項1:值,ID,型號,選項2:值 而我需要的是:ID,型號,選項1:值,選項2:值 – lStoilov

0

嘗試這樣

SELECT table1.* from table1 
JOIN table2 as lnk1 on table1.id = table2.tab1_id AND 
JOIN table3 as lnk2 on table2.id = table3.tab2_id -->here you can use table1 as to join also 

但請記住,加入的層次結構BEC一些表可能與先前的表有關,但可能尚未加入

+0

它不工作 @Amir比拉爾解決方案工作 – lStoilov

+0

Ofcourse我沒有使用你的代碼,因爲它是我...只是給了你一眼......就是這樣......但兩者ANS相同的加入... – Gautam3164

+0

感謝,你要跟是有益的太 – lStoilov

0
$sql = "SELECT 
    o.order_id, 
    o.name, 
    o.value, 
    GROUP_CONCAT(o.order_id, o.name, o.value SEPARATOR ',') AS Options, 
    op.model 
FROM `order_option` AS o 
INNER JOIN `order` AS oo on o.order_id = oo.order_id 
INNER JOIN `order_product` AS op on oo.order_id = op.order_id 
where oo.order_status_id = 2 
group by o.order_id"; 

這樣呢?

只是不要附加上您的訂單ID號加入,因爲它在所有表的鏈接。