SQL:一个表引用另一个表以返回第三个表

时间:2013-09-23 03:43:52

标签: mysql sql

我不是一个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

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

谢谢!

1 个答案:

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