2012-09-14 199 views
-1

我有2个表如下:SQL查询连接两个表

1.产品

product_id, name 
    1  Books A 
    2  Books B 
    3  Books C 
    4  Books D 
    5  Books E 

2.liked_items

user_id, product_id 
    1   4 
    1   3 
    1   1 

我要查询(SQL)来检索结果作为下面。 我可以在同一个查询中完成吗?

product_id, user_id 
1    1 
2    0 
3    1 
4    1 
5    0 

嗨,这是我第一次在这里发布。 希望任何人都可以帮助我。谢谢

+1

这似乎是一门功课的问题,您应该遵循:【如何提出和回答问题功课(http://meta.stackexchange.com/questions/10811/how-to-ask - 和 - 答案 - 作业 - 题)。如果没有显示一些问题的工作。 –

+0

是的。其工作非常感谢 –

+0

如果它工作,你可以[标记为答案](http://meta.stackexchange.com/a/5235/151967):) – JumpingJezza

回答

0
SELECT Products.product_id,liked_items.product_id,liked_items.user_id 
FROM Products 
    LEFT JOIN liked_items 
    ON Products.product_id=liked_items.product_id 
0

试试这个,

SELECT a.product_ID, 
     COALESCE(b.user_id,0) `user_id` 
FROM products a 
     LEFT JOIN liked_items b 
      ON a.product_ID = b.product_ID 

有时liked_items.user_id可以是可能NULL因此而不是在结果列表中显示NULL,它可以使用COALESCE改变。 COALESCE是一个功能,可以将NULL值更改为您的所需值

Click For Demonstration

+0

太棒了。感谢您的帮助... –

+0

@RajanRaj太棒了!别客气。 –

-1

如果您使用MS SQL Server,您可以使用ISNULL像这样:

SELECT p.product_id, IsNull(li.user_id, 0) 
FROM products p 
LEFT JOIN liked_items li 
    ON (p.product_id = li.product_id); 

如果没有,若昂和约翰的回答会做得很好。

0
SELECT 
    Products.product_id AS product_id, 
    IFNULL(liked_items.user_id,0) AS user_id 
FROM Products 
    LEFT JOIN liked_items ON liked_items.product_id=Products.product_id