请教 sql 语句

2014-10-11 15:02:10 +08:00
 changsha
SELECT * FROM product 

left join product_name on product_name.product_id = product.id
left join product_price on product_price.product_id = product.id
left join name_country on name_country.name_id  = product_name.id
left join price_country on price_country.price_id = product_price.id
where name_country.country_id = 1
and price_country.country_id = 1

表结构如下

想实现本地化(并且需要可排序),所以这么设计,不知道有没有更好的方法。

如何才能不 where 2 个表的 country_id 呢?因为需要本地化的信息还很多,可能拆分出10个小表。这样就需要 where 10 个表的 country_id

2782 次点击
所在节点    MySQL
7 条回复
heaton_nobu
2014-10-11 15:42:44 +08:00
我经验比较浅,没见过这样的表结构设计
如果你觉得改动很多country_id麻烦的话可以设一个变量
TangMonk
2014-10-11 15:44:33 +08:00
建议查考下一些开源的ecommerce表结构, prestashop什么的
coosir
2014-10-11 15:44:41 +08:00
难道不是把name和price放到一个表里面……
oott123
2014-10-11 15:51:47 +08:00
本地化和拆表有啥关系…
你直接一个表放进去不行么,一行就是一个语言,然后另外搞个表关联相同商品的不同行。
product_i18n
|--product_id--|--piece-id--|--language--|
product_piece
|--id--|--name--|--....--|
shyrock
2014-10-11 15:52:17 +08:00
说实话没看明白name表和name_country表的设计,意思是name_country表包含了对name的本地化字符串?
changsha
2014-10-11 16:32:35 +08:00
@coosir
@oott123
@shyrock

本地化拆分是,不要有冗余信息,相同语言的value,[可选择不用]重新本地化,也可以选择[本地化]。
imn1
2014-10-11 16:36:39 +08:00
这头像真气人,我抓起报纸想去驱赶……&%@(*@&)@#&(*^$^!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/138304

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX