2012-12-04 59 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