簡體   English   中英

在一個SQL查詢中聯接三個表

[英]Join three tables in one sql query

我有一個包含兩個表的查詢,我需要再加入一個表,以便獲得與訂單相對應的產品模型。

我到目前為止所擁有的是

$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”和“ model”(每個訂單一個記錄)。

現在的結果是

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

我要完成的是

ID,MODEL,選項1:價值,選項2:值

模型應來自第三個表“ order_product”的位置

任何建議都將受到高度贊賞。 謝謝

這樣嘗試

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

但是請記住,由於某些表的聯接的繼承關系可能與先前的表有關,但可能尚未聯接

$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號進行額外的聯接,因為它會鏈接到所有表格。

這應該達到以下目的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM