本文主要是介绍多表联查小情景例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这里有个需求:
需要给定套餐表setmeal 的 id 查询这个套餐内的所有菜品 dish
实际上如果可能,只需要查询套餐菜品表(setmeal_dish),查看一个套餐内包含包含的所有菜品,然后把这些菜品全部取出即可。
看一下setmeal_dish 表:
再看一下dish:
在 setmeal_dish 表中,没有查询到dish,只有dish的id。这个表应该是同一个setmeal_id 对应多个dish_id。
因此,我们如何需要现根据给定的 setmeal_id 查询 setmeal_dish,然后再根据得到的 dish_id 去 dish表查询。
因此逻辑如下:
/*** 根据套餐Id查询菜品dish* 这里的 dish 表中是没有 setmealId 的字段的。* 因此这里采用左连接,得到 dish 表的所有字段,然后将 dish 表和 setmeal_dish 表联查。* 对dish 和 setmeal_dish 采用左连接,先得到所有的 dish 表字段,然后 左连接 根据 dish 的 id 和 setmeal_dish 的 dish_id 联查* 根据 setmeal_dish 的 id 和给定的 setmealId 筛选。* @param id* @return*/@Select("select d.* from dish d left join setmeal_dish sd on d.id = sd.dish_id where sd.setmeal_id" +"= #{setmealId}")
这篇关于多表联查小情景例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!