我有一张桌子,上面有商家名字和字段,里面有他们提供的服务. “服务”字段是以逗号分隔的整数列表,它与另一个“服务”表相关,并带有“服务ID”和“服务名称”字段.
我正在尝试创建一个连接这两个的单个查询,因此我可以列出商家列表以及服务名称.到目前为止,我的解决方案是在我的初始’foreach’循环中进行第二次循环,但这可能意味着每个商家名称有5或6个db调用.
在一些StackOverflowing(google-ing)之后,我注意到使用逗号分隔字段可能不是最好的方法.
任何人都有办法进行连接,或者想如何更好地设置数据库结构?提前谢谢了!
最佳答案
Merchant
MerchantId Name
1 Adams Consulting
Merchant_Services
MerchantId Service
1 SEO
1 Brand Consulting
您实际上可以获得以逗号分隔的列表:
SELECT m.*,GROUP_CONCAT(ms.Service) AS Services
FROM Merchant m
LEFT JOIN Merchant_Serivces ms
ON ms.MerchantId = m.MerchantId
GROUP BY m.MerchantId
ORDER BY m.Name,ms.Service
结果是:
MerchantID Name Services
---------- ---------------- --------------------
1 Adams Consulting Brand Consulting,SEO