问题描述: 每个产品都绑定了一个供应商。一个订单有3个产品,分属2个供应商(A和B)。A供应商只能查看带有自己产品的订单,B供应商只能查看带有自己产品的订单。2个供应商都允许对自己的订单进行发货。所以这一个订单是产生了2条物流信息。    像这种结构应该怎么设计数据表?下面是我的思路设计的:
product产品表: id,title,supplier_id(供应商id)order订单表:
   
        id,sn(编号),address..tel...order_items订单明细表:       id,order_id,product_id,qty(数量),supplier_id(供应商ID)order_express订单物流信息表:       id,order_id,express_id(物流公司编号),express_no(物流单号),status(订单状态),supplier_id(供应商ID,标识是哪个供应商发的物流)像问题描述里面所说,order表会产生一条记录,order_items表里面会产生三条记录分属2个供应商,但事实上order_express表只会产生2条记录,分别是A供应商跟B供应商的发货记录,我现在用的join能够根据供应商id筛选出订单,但是会join order_items表所有记录。不知道我上面的数据表设计有没有改进的地方?下面是我的sql语句
SELECT o.id,o.sn,i.supplier_id,IFNULL(oe.status,'已提交') as status FROM pianook_order as o LEFT JOIN pianook_order_items as i ON i.order_id=o.id   LEFT JOIN pianook_order_express as oe ON oe.order_id=o.id AND oe.supplier_id=i.supplier_id where i.supplier_id=1 GROUP by sn