我有一张表格,其中包含商家名称和其提供的服务的字段。服务字段是用逗号分隔的整数列表,该整数列表与另一个服务表相关,带有服务ID和服务名称字段。

我正在尝试创建一个将这两个查询联接在一起的查询,因此我可以拥有一个商人列表以及服务名称。到目前为止,我的解决方案是在最初的“foreach”循环中进行第二个循环,但这可能意味着每个商户名称需要进行5或6个db调用。

经过一些StackOverflow-ing(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

10-05 22:24