2015-06-19 80 views
1

我想在两列之间进行SQL查询。SQL语句为两个不同的列

TABLE_1

ID  ProductName  ProductDescription 
1  Prod_1    Description_1 
2  Prod_2    Description_1 
3  Prod_3    Description_1 
4  Prod_4    Description_1 
5  Prod_5    Description_1 

TABLE_2

ID  Product  Partner 
1   1    21 
2   2    21 
3   3    21 
4   1    32   
5   1    32    
6   4    21    
7   5    21 
8   5    32 

通过使用下面的查询,我得到的结果仅是在TABLE_2选择的产品清单。这很好,我需要这样做,但我也希望在同一个查询中打印来自table_1的所有值,以便稍后进行编程。不知道是有可能使一列,将打印1,如果PRODUCT_ID和ID匹配,如果不打印0

$query = "SELECT a.ID, a.ProductName, b.ID, b.Product, b.Partner 
FROM table_1 a 
LEFT JOIN table_2 b 
ON a.ID = b.Product 
WHERE b.Partner = 21" 

我想打印在TABLE_2选择什么TABLE_2从TABLE_1匹配值。 我在这里卡住任何意见表示赞赏。

+2

请发布预期结果也 –

+0

我也陷在这里了,但如果你也发布了你的预期输出,那就不会发生了。 –

+0

我认为它应该是a.ID = b.Product。可能 –

回答

4

正如我与你requirenments是对的这个未经测试的查询应该工作:

$query = "SELECT a.ID, a.ProductName, b.ID, b.Product, b.Partnerm, case when b.id is null then 0 else 1 end 
FROM table_1 a 
LEFT JOIN table_2 b 
ON a.ID = b.ID and b.Partner = 21" 
+0

@ user3651819对不起,忘记在案件前的逗号。已添加它。请再试一次。 – Jens

+0

非常感谢你 – user3651819

+0

@ user3651819不客气 – Jens

1

试试这个

$query = "SELECT a.ID, a.ProductName, b.ID, b.Product, b.Partnerm case when b.id is null then 0 else 1 end 
    FROM table_1 a 
    LEFT JOIN table_2 b 
    ON a.ID = b.Product and b.Partner = 21" 
1
$query = "SELECT a.ID, a.ProductName, b.ID, b.Product, b.Partner FROM table_1 a LEFT JOIN table_2 b 
ON a.ID = b.Product WHERE b.Partner = 21" 

有点像这一点,因为表1和表2之间的连接是ID和产品。

+0

这不是一个答案。它没有给出正确的解决方案。但是你是对的我犯了错误,它应该是b.Partner,但仍然不正确 – user3651819

+0

现在我很困惑xD ...如果你想提供一个sqlfiddle,会更容易。 –

+0

@Jens给出了正确的解决方案。感谢您的帮助 – user3651819