表 order (订单基本信息),有以下字段: oid:int,自增主键 opids:varchar,值类似“3,4","5,"6,7,8",意思是这个订单,包含了哪几个产品(对应 product 表里 pid 字段) ocomment:varchar,备注信息,关键字查询要查到此字段
表 product (产品信息),有以下字段: pid:int,自增主键 pinfo:varchar,产品信息,关键字查询要查到此字段
这两个表的用法是,新增一个订单的时候,订单的客户信息、发货地址等都是一样的,所以这些基本信息,都存在 order 表中,然后一个订单可能包含 1 个或者多个产品,产品的具体信息存在 product 表中。然后插入完 product 表的数据后,把 pid 处理并存入到 order 表的 opids 字段中。
现在要查询 ocomment 或 pinfo 中含有“测试”关键字的信息,要求查询的结果以 product 为主,每一条结果,都要有完整的订单基本信息,但是 pid 不重复,比如: pid|pinfo|oid|opids|ocomment ---|:--:|:--:|:--:|:--:| 3|"测试"|1|"3,4"|"" 5|"产品 5 的信息"|2|"5,6,7"|"测试" 6|"产品 6 的信息"|2|"5,6,7"|"测试" 7|"产品 7 的信息"|2|"5,6,7"|"测试" 9|"测试产品 9"|5|"9,10"|""
我之前写了一堆 left jon 或者 group by,都查不到准确的结果,要么重复的结果( pid 重复),要么某些结果缺少订单基本信息,请指教!
1
liprais 2020-04-07 15:41:35 +08:00
表 order (订单基本信息),有以下字段:oid:int,自增主键 opids:varchar,值类似“3,4","5,"6,7,8",意思是这个订单,包含了哪几个产品(对应 product 表里 pid 字段) ocomment:varchar,备注信息,关键字查询要查到此字段
这建模真优秀,先把订单和产品的对应关系找到再说 |
2
shavy OP @liprais 确实,我是一个菜鸟,但是我来这里提问,正是自身不断提高的过程,你可以不回答,你也可以准确指出问题在哪,但是这样阴阳怪气的回答,就不必要了。
|
7
vanton 2020-04-07 15:50:58 +08:00
结构有点问题,可以试下生成 10 万条订单数据测试下性能。
|
9
vanton 2020-04-07 15:54:47 +08:00
|
11
xhxhx 2020-04-07 16:04:36 +08:00
拆成 3 个表 order order_goods goods
|
12
jatesun 2020-04-07 16:19:36 +08:00
9 楼正解,此贴可以终结
|
13
Jrue0011 2020-04-07 17:08:13 +08:00
看描述订单 oid 和产品 pid 是多对多关系?然后你还要查产品信息 pinfo 里包含关键词的记录,那应该怎么查都避免不了产品 pid 重复吧?假设一条产品记录的 pinfo 包含了查询关键词,然后有多个订单记录都包含了这个产品,查询结果又包含 pid 和 oid,那相同的 pid 和不同的 oid 就是两条结果
|
14
telami 2020-04-07 17:22:54 +08:00
嗯,肯定是要搞一个关系表的,明显多对多
|
15
akira 2020-04-07 17:36:08 +08:00
opids:varchar,值类似“3,4","5,"6,7,8",意思是这个订单,包含了哪几个产品(对应 product 表里 pid 字段)
--------------- 这样的设计数据量到千这个规模就会很大概率出现性能问题。参考 11 楼的方案重新设计下表结构关系吧。 老版本的 wp 也有类似的问题 |
16
shavy OP 已经按照 9 楼,11 楼的方法,新建了一个对应的表了,谢谢各位!
|