做一个外卖订单后台。(商家的)
需求 显示 买家 的信息 以及购买的商品。
关系表(Mysql): 订单表/ 用户表 / 订单状态表/商品表/店铺表/ 这几个表关联起来。
我的思路是 写一个sql语句。 然后通过页面的for循环 (俩个循环) 一个循环用户以及订单表的信息,在第一个for循环里面再插入一个for循环 用来遍历 商品 表。 现在唯一的就是 思路不清晰。sql语句写的也有问题。 希望有经验的人能帮忙瞅瞅, 我用的JFinal 不过应该不管框架的事情。 不知道我有没有说到重点。
好像可以了。 基本上 把关系表得sql语句写上去 然后第二次循环商品得时候 我又写了一条sql语句。 就可以了 主要是这个id 拿得时候拿了很久。
用for循环可以实现,不过性能可能低,因为每次for循环都是一个数据库链接;可以试一下mysql中的数据库关联查询,减少for循环;
这种的话当然不要用for循环进行查询
1.查出来的数据还需要处理才行
2.for循环本来就慢,再加上两条sql查询语句,系统更慢。
最好还是用数据库关联查询,循环显示在页面
需求 显示 买家 的信息 以及购买的商品
后台
1,先查询出买家信息
2,以买家信息为条件查询出购买的商品
3,返回给前台结果(json,list等)
前台
取出值,展示 -- 具体要看用的什么
1.找出主表,取出一定数量数据后进行循环,通过外键获取其它字段记录(这部分可调用其数据模型提供的函数接口),性能还行吧
2.创建关联模型或者数据视图,这部分工作交由数据库系统完成。
用一条SQL就可以实现连表查询,去研究一下左连接、右连接查询
select * from用户,订单,状态,商品,店铺
where 用户.关联=订单.关联 and 订单。关联=店铺。关联
and 订单。关联=状态。关联 and 订单。关联=商品。关联
因为一个用户有多个订单 每个订单又包含多个商品 其他都是一对一嘛 然后你可以里面再加条件 比如 哪个单号啊 状态是什么啊
select 的内容要自己好好看看 如果两个表字段名称有相同的 你可以 select xx as 名称
用户-----1对n>订单
订单----1对1-->店铺
订单----1对1->状态
订单----1对n->商品
最小的就是到商品
select o.*,info.shop_name,p.product_name,p.product_num,p.total_price,us.nickname,us.s_phone,us.s_addr,s.state_name,p.id product_ids from t_waimai_order o LEFT JOIN t_wxuser us on o.openid=us.id LEFT JOIN t_waimai_order_state s on o.state =s.id LEFT JOIN (select * from t_waimai_order_product )as p on o.id = p.order_id LEFT JOIN t_shop_info info on info.shop_id=o.shop_id where o.shop_id = ?
最好不要用连接查询 分库分表的时候 会比较麻烦 可以每个表写一个SQL 要显示的字段通过map的方式存储 这样可以减少数据库的压力