C# Sql客户与所有产品查询
我有三张桌子 客户、姓名、地址 报纸名称、名称、价格 周刊杂志、名字、价格 订单id、cid、nid、wid 现在一个客户拥有两份以上的报纸或杂志。 我正在寻找以下结果的查询C# Sql客户与所有产品查询,c#,sql,sql-server,C#,Sql,Sql Server,我有三张桌子 客户、姓名、地址 报纸名称、名称、价格 周刊杂志、名字、价格 订单id、cid、nid、wid 现在一个客户拥有两份以上的报纸或杂志。 我正在寻找以下结果的查询 john--news1,news2,weeklymag1 King--news1 Jessel--news2,mag1,weeklymag2 Smith--new4,mag3 还是我需要创建此报告的过程 感谢您的时间和回答。您可以使用GROUP CONCAT: SELECT c.cid, c.name, CONCA
john--news1,news2,weeklymag1
King--news1
Jessel--news2,mag1,weeklymag2
Smith--new4,mag3
还是我需要创建此报告的过程
感谢您的时间和回答。您可以使用GROUP CONCAT:
SELECT c.cid, c.name, CONCAT(GROUP_CONCAT(n.name), ', ', GROUP_CONCAT(w.name))
FROM customers c
LEFT JOIN orders o ON c.cid = o.cid
LEFT JOIN newspaper n ON o.nid = n.nid
LEFT JOIN weeklymag w ON o.wid = w.wid
GROUP BY c.cid, c.name
使用GROUP_CONCAT函数
SELECT c.name, CONCAT(GROUP_CONCAT(n.name SEPARATOR ','), IF(COUNT(DISTINCT n.id)>0 AND COUNT(DISTINCT m.id) >0,',',''), GROUP_CONCAT(m.name SEPARATOR ',')) mags
FROM customers c
LEFT JOIN orders o ON o.cid = c.cid
LEFT JOIN newspaper n ON n.nid = o.nid
LEFT JOIN weeklymag m ON m.wid = o.wid
GROUP BY c.cid
选择C.NAME
STUFF((SELECT DISTINCT' '+ N.NAME + ' | '
FROM NEWSPAPER N
JOIN ORDERS O ON O.NEWS_ID = N.ID
WHERE O.CUST_ID = C.ID
FOR XML PATH('') , TYPE).value('.','NVARCHAR(MAX)'),1,0,'')as NEWS
,
STUFF((SELECT DISTINCT' '+ w.name +' | '
FROM weekly w
JOIN ORDERS O ON O.Weekly_id = w.id
WHERE O.CUST_ID = C.ID
FOR XML PATH('') , TYPE).value('.','NVARCHAR(MAX)'),1,0,'')as WEEKLY
,STUFF((SELECT DISTINCT' '+ m.name +' | '
FROM monthly m
JOIN ORDERS O ON o.monthly_id = m.id
WHERE O.CUST_ID = C.ID
FOR XML PATH('') , TYPE).value('.','NVARCHAR(MAX)'),1,0,'')as MAG
来自客户C我正在使用我的sql server,而group_concat不起作用,我仍在尝试寻找其他替代方案感谢我通过使用STUFF找到了group_concat的替代方案。解决了它我正在使用sql server,group_concat不起任何其他替代方案啊,好吧,我对sql server没有太多经验,但这里似乎有人解决了一个类似的问题谢谢我明白了。