2016-05-24 56 views
1

我有表如下2表连接和1组CONCAT

销售

salesid |custid |date_created |total_price 
S0001  C0001  2015-12-31  20.00 
S0002  C0002  2016-01-01  10.00 
S0003  C0003  2016-01-02  30.00 
S0004  C0001  2016-01-05  50.00 

salesdetails

salesdetailsid |salesid |product_name   |quantity 
D0001    S0001  pencil     3 
D0002    S0001  book     2 
D0003    S0001  ruler     1 
D0004    S0002  Hard Cover File Folder 1 
D0005    S0003  A4 Paper    1 
D0006    S0003  Notebook    1 
D0006    S0004  Mouse     1 

我预期的输出应该是:

如果客户ID是C0001,输出:

salesid | Purchase Date | Items 
S0001  2015-12-31   pencil x 3,book x 2, ruler x 1 
S0004  2016-01-05   Mouse x 1 

如果客户ID是C0002,输出:

salesid | Purchase Date | Items 
S0002  2016-01-01   Hard Cover File Folder x 1 

如果客户ID是C0003,输出:

salesid | Purchase Date | Items 
S0003  2016-01-02   A4 Paper x 1, Notebook x 1 

这是我到目前为止有:

SELECT s.salesid   AS "id", 
     s.time_created  AS "Purchase Date", 
     s.total_price  AS "Amount", 
     GROUP_CONCAT(Concat(prodname, ' x ', quantity) SEPARATOR ', ') AS "Items" 
FROM sales s 
JOIN salesdetails d 
    ON s.salesid = d.salesid 
WHERE s.custid = 'C0001' 
+0

向我们展示数据样本和预期输出。请阅读[** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t这里是[** START **](http ://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/),了解如何提高您的问题质量并获得更好的答案。 –

+0

@JuanCarlosOropeza嗨,我编辑了我的问题,希望它能给出一个清晰的图片。 –

+0

这样比较好,那么当前查询得到的结果是什么,出了什么问题? –

回答

1

你缺少你的GROUP BY子句,它实际上使你的group_concat工作,看看它是否有效:

SELECT s.salesid   AS "id", 
     s.time_created  AS "Purchase Date", 
     s.total_price  AS "Amount", 
     Group_concat(Concat(prodname, ' x ', quantity) SEPARATOR ', ') AS "Items" 
FROM sales s 
JOIN salesdetails d 
ON  s.salesid = d.salesid 
WHERE s.custid = 'C0001' 
GROUP BY s.salesid 
+0

OMG,非常感谢你指出我的错误!小错误,大头痛......问题终于解决了,它的上午2点30分在这里。我需要休息一会儿。再一次,谢谢你! –