我一直在试图弄清楚如何在不同的桌子之间创建链接,并且没有运气来解开这个谜团。我学的越多,我就会质疑我应该问什么问题。我制作了一些表格图来展示我想要实现的目标......
我有一个衬衫表,看起来像这样:
请注意,在标有“qp_price”和“o_price”的列中,我有文字而不是价格,这是因为我想将其连接到此表:
“qp_price”和“o_price”的值等于price表中“price_cat”列中的值之一。这是我试图在未来简化价格管理的方式。在衬衫表中,你会看到有重复的价值,因为它们的价格相同,除了男士的衬衫外,还有女性的工作人员,男孩,女孩和婴儿。我想将它们链接到一个新的衬衫表中,结果如下:
我也想知道索引以及是否最好将其创建为索引:
然后将它注入到shirts_master表中,然后执行此操作并将“clr_options”和“qty”列添加到shirts_master表中。我希望它以两种不同的价格组织起来,因为我有两种类型的自定义服务,它们将调用相应的列。最后,我仍然希望衬衫和价格表是单独的,只是链接到另一个表,所以我可以更新它们并让它通过链接自动在主表中读取它。把这个放在一起最聪明的方法是什么?
答案 0 :(得分:1)
来自SHIRT表的您的列qp_price
和o_price
应该是外键,它引用表PRICE_LIST中的列price_id
。然后,您不需要PRICE_LIST表中的列price_cat
。
答案 1 :(得分: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;