一段逻辑思维比较乱的3表联合查询,一个下午了做不出了!

图片描述

要求如图所示了,很苦恼自己想了一下午了也写不出来

如果看不懂图例的要求,我再补充下:表1是一级目录 表2是二级目录 然后商品全部都在表2里面对应,表2的分类全部都在表1里面。 我想通过 查询表1里面的一条字段就对饮将表一所有的耳机目录下 所有的商品记录都查询出来。

真的很费逻辑,求大神指点迷津! ?

阅读 3.2k
3 个回答
    SELECT 
    t3.*
    FROM t3
     LEFT JOIN t2 ON t3.cm_class=t2.class_id
     LEFT JOIN t1 ON t2.class_num=t1.meal_id
    WHERE t1.meal_id=1

如果你要查到所有早餐分类里面的所有商品记录就联合三张表像@rebiekong的sql就行,ps:如果关联关系可以一一对应,不需要left join,使用join最好
如果你只需要查出早餐分类1和早餐分类2的商品记录,那你只需要t2和t3联查就可以了
联表查询基本语法

select t3.* from t3 join t2 on t2.class_id=t3.cm_class 
where t2.class_title in ('早餐分类1','早餐分类2');

SELECT
p.*
FROM
product
LEFT JOIN table2 t2

ON t2.cm_class = p.class_id 

LEFT JOIN table1 t1

ON t1.meal_id = t2.class_num 

WHERE t1.meal_id = 1

看来跟一楼的答案是一致的,有条件的话,不一定用内连接。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题