在一个SQL查询中加入三个表

时间:2013-02-08 10:31:22

标签: php mysql join

我有两个表的查询,我需要再加一个表,这样我就可以得到与订单相对应的产品模型。

到目前为止我所拥有的是

$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,option1:Valude,option2:Value

我想要完成的是

ID,MODEL,option1:Valude,option2:Value

模型应该来自第三个表“order_product”

任何建议都非常感谢。 感谢

3 个答案:

答案 0 :(得分: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

但请记住,某些表格的加入层次结构可能与之前的表格有关,但可能尚未加入

答案 1 :(得分: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号进行额外加入,因为它会链接到所有表格。

答案 2 :(得分: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