我不是一个SQL人,所以这个问题对你们很多人来说都很容易。但我有两个表,我想要一个SQL语句通过组合表1和2的值来返回第三个表。
我有以下表格:
表格产品:
Column NAME
Column CAMPAIGNS
表CAMPAIGN:
Column ID
Column NAME
使用以下值:
产品:
Nike Sneakers | 1 2 3
广告活动:
1 | Red Shoes
2 | No laces
3 | Velcro
4 | White Shoes
我希望广告系列名称与产品一起返回,而不是广告系列ID。
结果表:
Nike Sneaker | Red shoes, No laces, Velcro
你们将如何实现这一目标?
谢谢!
答案 0 :(得分:2)
您要做的是创建多对多的联接(1个产品可以包含多个广告系列,1个广告系列可以包含多个产品)。您无法通过将所有广告系列存储在一列中来实现此目的。正确的方法是创建多对多连接,这意味着您需要创建一个连接表:
Table PRODUCT:
Column ID
Column NAME
Table CAMPAIGN:
Column ID
Column NAME
Table PRODUCTCAMPAIGN
Column ProductID
Column CampaignID
Product:
1 | Nike Sneakers
Campaign:
1 | Red Shoes
2 | No laces
3 | Velcro
4 | White Shoes
ProductCampaign
1 | 1
1 | 2
1 | 3
然后你可以做
SELECT Product.ID, Campaign.Name
FROM Product
INNER JOIN ProductCampaign
ON ProductCampaign.ProductID = Product.ID
INNER JOIN Campaign
ON Campaign.ID = ProductCampaign.CampaignID
那应该给你:
Nike Sneaker | Red shoes
Nike Sneaker | No laces
Nike Sneaker | Velcro
然后你应该能够将它们以逗号分隔。我没有MySQL在我面前帮助你。我认为GROUP_CONCAT应该适合你。