2013-09-23 110 views
0

我不是一個SQL人,所以這個問題可能對你們很多人來說很容易。但我有兩個表,我想一個SQL語句,通過組合和表1的值2SQL:一張表引用另一張表返回第三張表

回到我第三個表,我有以下表格:

表產品:

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

您需要查看規範化數據庫並在Product和Campaign之間創建多對多表。沒有簡單的方法將產品中的值1 2 3加入Campaign中的3個獨立記錄。 – Greg

回答

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應該爲你工作。

+0

工作就像一個魅力:)謝謝!現在,如果我想將產品(耐克運動鞋)插入3個廣告系列,我該怎麼做? –

+0

格雷格與SQL語句不會返回不在廣告系列中的產品如何返回這些產品? –

+0

如果要將產品添加到廣告系列,只需將記錄添加到ProductCampaign表。爲了讓所有產品成爲產品和產品營銷之間的左連接 – Greg