2012-12-04 100 views
0

我一直在試圖弄清楚如何在不同的表格之間創建鏈接,並且我沒有辦法破解這個謎團。我學得越多,就越懷疑我應該問什麼問題。我做了一些表圖,以顯示我想要實現...我怎樣才能實現這個SQL表連接?

我有一個表的襯衫,看起來像這樣:

shirts table

在標有「qp_price」和「公告欄o_price「我有文本,而不是價格,那是因爲我想將它連接到這個表:

price list

中的值‘qp_price’和‘o_price’等於在值的一個」 p價格表中的「rice_cat」列。這是我試圖簡化未來價格管理的方法。在襯衫桌上,你會發現有重複的價值觀,因爲他們花費的價格相同,除了男士的襯衫外,還有女士的脖子,男孩,女孩和嬰兒。我想將它們連接成一個新的襯衫表,其中它的結果是這樣的:

master shirts

我也想知道有關索引,如果它會更好地創建這是一個索引:

shirts index

然後將其注入shirts_master表中,但是您需要將「clr_options」和「qty」列添加到shirts_master表中。我希望它以兩種不同的價格組織起來,因爲我有兩種類型的自定義服務將調用相應的列。最後我還是希望襯衫和價格表能夠單獨鏈接到另一張桌子上,這樣我就可以更新它們並讓它通過鏈接自動在主表中讀取。將這些放在一起最聰明的方法是什麼?

+3

營造它爲什麼襯衫表中的qp_price和o_price沒有通過price_id鏈接到價格表? – Fred

+1

你想把它們複製到新表中,或者你只想要shirts_master並保留舊錶並更新它們兩者? –

+0

我嘗試將它們連接起來,並在新表格中查看qp_price和o_price插槽中的price_id,而不是價格。有沒有辦法讓它顯示價格而不是ID? – Optiq

回答

1

不能確定你想要做什麼,但你可以得到你的shirts_master用一個簡單的加入

select s.shirt_id, s.shirt_name, s.shirt_type, s.shirt_size, 
     qp.price as qp_price, o.price as o_price, s.clr_options, s.qty 
from shirts s 
join price_list qp on qp.price_cat = s.qp_price 
join price_list o on o.price_cat = s.o_price; 

如果你想這是一個觀點,你可以用

create view shirts_master as 
select s.shirt_id, s.shirt_name, s.shirt_type, s.shirt_size, 
     qp.price as qp_price, o.price as o_price, s.clr_options, s.qty 
from shirts s 
join price_list qp on qp.price_cat = s.qp_price 
join price_list o on o.price_cat = s.o_price; 
+1

tho,使用multy表查看可以只更新其中的一個... –

+1

@ user1811846如果OP想要獨立更新表格「shirts」,「prices」和「shirts_master」。但是,你可能會遇到不一致的情況。 –

+0

偉大的工作!!!! ....不知何故...但我怎麼得到它在我有兩列與shirts_master表中的價格?以及如何在新表中設置這些列的名稱?謝謝!!!! – Optiq

1

你列qp_price和襯衫表o_price應該是一個外鍵這表PRICE_LIST到price_id列引用。那麼您將不需要PRICE_LIST表中的列price_cat

+0

我之前曾嘗試過,但它在我想要價格顯示在新表格中的列中顯示price_id。我如何將qp_price和o_price鏈接到price_id並獲得價格顯示而不是id? – Optiq

+1

我不確定是否要「建立」新表,但'shirt_master'不應該存在於數據庫中...您可以使用查詢來檢索這樣的數據:'SELECT s.shirt_id s.shirt_name,s .shirt_type,s.shirt_size,p.price FROM shirts s LEFT JOIN price_list p on p.price_id = s.price_id'。 – jmrodrigg

+0

讓我試着解釋它好一點,抱歉不夠清楚。我想要的是爲我的襯衫製作一張桌子,然後再爲另一張桌子製作價格,然後我想製作一張顯示每件襯衫價格的新桌子。在襯衫表中,我設置了「qp_price」和「o_price」,這樣我就可以進入我的「price_list」表並更改一個價格,而不必更改其中的一個。例如,我設置的其中一個值是「crn_qp_a」,在我的襯衫桌上,我將該值設置爲25種不同的襯衫, – Optiq