一、两张表查询
表结构
主表t_logistics_cell_info
MySQL多表查询解析
从表t_logistics_cell_list
MySQL多表查询解析
分析表t_logistics_cell_list中logistics_id对应表t_logistics_cell_info中的id,所以我们在写连接时where条件可写成
t_logistics_cell_info.id=t_logistics_cell_list_logistics.id
完整例子:
SELECT * FROM t_logistics_cell_info,t_logistics_cell_list WHERE t_logistics_cell_info.id=t_logistics_cell_list.logistics_id;
由于表t_logistics_cell_info中的一条记录对应表t_logistics_cell_list中有72条记录所以在写的时候要加上group by对表t_logistics_cell_list进行分组再进行查询,以为我们只需要获取表t_logistics_cell_list中的一条与t_logistics_cell_info对应即可所以查询语句这样写
SELECT t1.id,t2.logistics_id,t2.id,t1.epc,t1.amount,t1.product_id,t2.logistics_id,t2.packing_epc,t2.flag,t1.gmt_create FROM t_logistics_cell_info t1,(SELECT * FROM t_logistics_cell_list GROUP BY logistics_id) t2 WHERE t1.id=t2.logistics_id LIMIT 10;
解析:这里我把两张表进行了重命名,t1,t2分别对应t_logistics_cell_info,(SELECT * FROM t_logistics_cell_list GROUP BY logistics_id) 因为这里需要对t_logistics_cell_list中的数据进行分组表中数据很多,所以我限制了返回的数据10条LIMIT 10
结果展示
MySQL多表查询解析
由于我只查询了指定字段,所以只返回了t1,t2中的
t1.id,t2.logistics_id,t2.id,t1.epc,t1.amount,t1.product_id,t2.logistics_id,t2.packing_epc,t2.flag,t1.gmt_create这些字段
多表查询的方式有很多种,我只是根据需要对子查询进行介绍,例如等值连接,左外连接,右外连接,自然连接等就等后期用到再记录吧。
二、三表查询
表结构
t_logistics_cell_info
MySQL多表查询解析
t_packing_list
MySQL多表查询解析
t_logistics_cell_list
MySQL多表查询解析
有两张表跟上面两张表是同样的,不多记录了
t_packing_list这张表中的packing_info_id对应t_logistics_cell_list表中的id
所以在写的时候先关联t_logistics_cell_list和t_logistics_cell_info表,获取t_logistics_cell_list中的id,再与t_packing_list表关联查询
同样还是需要对表进行分组
SELECT t1.packing_info_id,t1.code,t1.inside_code,t1.flag,t2.product_id FROM t_packing_list t1,
(SELECT p2.logistics_id,p1.surplus_amount,p2.id,p2.packing_epc,p1.product_id FROM
(SELECT * FROM t_logistics_cell_info WHERE surplus_amount=72 AND product_id=7) p1,
(SELECT * FROM t_logistics_cell_list GROUP BY logistics_id) p2 WHERE p1.id=p2.logistics_id) t2 WHERE t1.packing_info_id=t2.id GROUP BY t1.packing_info_id
这里我先查询t_logistics_cell_info中surplus_amount=72和product_id=7的数据
再对t_logistics_cell_list中的数据进行分组,然后将这两张表结合p1.id=p2.logistics_id,生成一个新的表命名为t2,再将t2中的packing_info_id与t_packing_list中的id关联 t1.packing_info_id=t2.id
查询结果
MySQL多表查询解析
总结:
测试对数据库的要求是必须的,所以一定要经常练习才能信手拈来这里可以给大家推荐一个训练的网站:实验楼,这里面有很多项目可以练习的。

相关文章:

  • 2021-09-28
  • 2021-09-08
  • 2021-05-11
  • 2021-06-28
  • 2021-10-25
猜你喜欢
  • 2021-10-26
  • 2021-11-28
  • 2021-04-30
  • 2021-08-20
相关资源
相似解决方案