2017-10-09 119 views
-1

与表格一样,我希望输出所有产品的清单,但同时列出谁购买了每种产品的清单。输出产品清单以及谁购买了这些产品

如下

products 
================= 
|prodId |prod | 
================= 
|1  |hat | 
|2  |shirt | 
|3  |watch | 
|4  |cream | 
|5  |pizza | 
================= 


orders 
========================= 
|ordID |prodID |cust | 
========================= 
|1  |2  |paul | 
|2  |4  |paul | 
|3  |4  |bob | 
|4  |5  |jane | 
|5  |4  |sarah | 
========================= 

我的数据structued我希望得到这样的结果,其中如果没有客户已经购买了它,这将是null

================= 
|prod |cust | 
================= 
|hat |null | 
|shirt |paul | 
|watch |null | 
|cream |paul | 
|cream |bob | 
|cream |sarah | 
|pizza |jane | 
================= 
+1

尝试使用谷歌搜索“SQL连接” – DwB

回答

0
SELECT p.prod, o.cust, count(o.*) count_of 
FROM products as p 
LEFT OUTER JOIN orders as o ON p.prodid = o.prodid 
GROUP BY prod, cust 

要到达在al产品列表中,以from products开始,然后使用OUTER连接,该连接允许返回不匹配的行以及具有 比赛。

然后,group by将列表减少为唯一的组合,并且它使聚合这样一个计数。

0

下面的查询应该做的工作

select p.prod, o.cust from products p left outer join orders o on p.prodId = o.prodId;