2017-06-03 50 views
0

我在MSQL三个表的值的列表如下所示MySQL查询:用于在单个细胞

customer_details:

cust_id  cust_name Mob_No 
----------------------------------------- 
1   john  9999999999 
2   Rex   1234567890 

customer_services:

cust_id  service_id 
-------------------------- 
1   s1 
2   s2 
1   s2 

m_service:

service_id service_name 
---------------------------- 
s1    IT 
s2    VAT 

我需要结果如下:

cust_id  cust_name service_name 
-------------------------------------------- 
1  John  IT, VAT 
2  Rex   VAT 

我试过如下:

SELECT a.cust_id,a.cust_name, c.service_name 
FROM customer_details a, customer_service b, m_service c 
WHERE a.cust_id=b.cust_id AND b.service_id=c.service_id; 

但我需要在同一行中的服务名称。任何帮助是非常可观的

感谢和问候 Biswa

+0

不保存CSV在一列http://stackoverflow.com/questions/41304945/best-type-of-indexing-when-there-is-like-clause/41305027#41305027 http://stackoverflow.com/questions/41215624/sql -table-entry-vs-sql-table-with-a-row-for-each-entry/41215681#41215681 – e4c5

+0

考虑处理应用程序代码中的数据显示问题 – Strawberry

回答

0

您可以使用MySQL的GROUP_CONCAT()函数生成,你在你的输出需要的服务名称的CSV列表:这里

SELECT 
    t1.cust_id, 
    t1.cust_name, 
    GROUP_CONCAT(t3.service_name) AS service_name 
FROM customer_details t1 
INNER JOIN customer_services t2 
    ON t1.cust_id = t2.cust_id 
INNER JOIN m_service t3 
    ON t2.service_id = t3.service_id 
GROUP BY 
    t1.cust_id, 
    t1.cust_name 

演示:

Rextester