2013-01-24 30 views
0

我无法正确识别此问题。从2个表中选择视第一个表中的2列而定

我有一个名为表1_related

id,prod_pack,fk_prod_pack_id,fk_prod_pack_related,fk_prod_pack_related_id 
'2', '0', '102', '0', '2482' 
'3', '0', '102', '0', '3147' 
'2294', '0', '102', '1', '10' 

我还有其他2个表称为1_products和1_packages

我要加入两个表的取决于fk_prod_pack_related值(0为1_products内容为1_packages表和表1)

该查询返回的行2和3从1_related并加入1_products的内容

SELECT 
    r . *, p . * 
FROM 
    1_related AS r 
     INNER JOIN 
    1_products as p ON r.fk_prod_pack_related_id = p.id 
     and r.fk_prod_pack_related = 0 
WHERE 
    r.prod_pack = 0 
     and r.fk_prod_pack_id = 102 

但我也从1_packages需要的数据,所以我试过,但它没有

SELECT 
    r . *, p . *, s . * 
FROM 
    1_related AS r 
     INNER JOIN 
    1_products as p ON r.fk_prod_pack_related_id = p.id 
     and r.fk_prod_pack_related = 0 
     INNER JOIN 
    1_packages as s ON r.fk_prod_pack_related_id = s.id 
     and r.fk_prod_pack_related = 1 
WHERE 
    r.prod_pack = 0 
     and r.fk_prod_pack_id = 102 
+0

RaphaëlAlthaus,我看你已经编辑过这篇文章。你如何获得页面上的格式? –

回答

1

你需要左外连接返回,因为只有查询之一是要匹配:

SELECT 
    r . *, p . *, s . * 
FROM 
    1_related AS r 
     left outer JOIN 
    1_products as p ON r.fk_prod_pack_related_id = p.id 
     and r.fk_prod_pack_related = 0 
     left outer JOIN 
    1_packages as s ON r.fk_prod_pack_related_id = s.id 
     and r.fk_prod_pack_related = 1 
WHERE 
    r.prod_pack = 0 
     and r.fk_prod_pack_id = 102 
+0

谢谢戈登的帮助 –