0

我不是 SQL 专家,所以这个问题对你们中的许多人来说可能很容易。但是我有两个表,我希望 SQL 语句通过组合表 1 和 2 的值来返回第三个表。

我有以下表格:

表产品:

Column NAME
Column CAMPAIGNS

表广告系列:

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

你们将如何实现这一目标?

谢谢!

4

1 回答 1

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 应该适合你。

于 2013-09-23T04:59:37.107 回答