使用多个表连接父记录的MySQL

使用多个表连接父记录的MySQL,mysql,join,left-join,parent,Mysql,Join,Left Join,Parent,我有三个表格:菜单,菜单数据,语言。第一个用于存储不需要本地化的菜单信息,第二个包含基于语言(如标题)的本地化数据,最后一个包含语言ID。菜单可以由父菜单拥有,我希望在选择子菜单时提取此父菜单。 我可以使用嵌套的左连接查询来执行此操作,如下所示: 选择la.title、la.permaname、menu.edittime、menu.id、la2.title作为父项\u title、pmenu.id作为父项\u id 从fm_菜单作为菜单 左连接fm_菜单_数据为la ON(menu.id=la.

我有三个表格:菜单,菜单数据,语言。第一个用于存储不需要本地化的菜单信息,第二个包含基于语言(如标题)的本地化数据,最后一个包含语言ID。菜单可以由父菜单拥有,我希望在选择子菜单时提取此父菜单。 我可以使用嵌套的左连接查询来执行此操作,如下所示:

选择la.title、la.permaname、menu.edittime、menu.id、la2.title作为父项\u title、pmenu.id作为父项\u id
从fm_菜单作为菜单
左连接fm_菜单_数据为la ON(menu.id=la.targetid和la.languageid=1)
在pmenu.id=menu.parentmenu上将fmu菜单作为pmenu左键连接
左连接fm_菜单_数据作为la2打开(pmenu.id=la2.targetid和la2.languageid=1)
但是,我的问题是,有一种更紧凑、更快或正确的方法来做类似的事情吗?

您的查询看起来不错

通过从联接条件中删除不必要的括号,并删除可选的
AS
关键字,可以使它稍微紧凑一些

这是相同的,但用更少的字符表示:

SELECT la.title, la.permaname, menu.edittime, menu.id, la2.title AS parent_title, pmenu.id AS parent_id 
FROM fm_menu AS menu 
LEFT JOIN fm_menu_data la ON menu.id = la.targetid and la.languageid = 1
LEFT JOIN fm_menu pmenu ON pmenu.id = menu.parentmenu 
LEFT JOIN fm_menu_data la2 ON pmenu.id = la2.targetid and la2.languageid = 1

对我来说是的,它是对的,工作很好,但我想问的是,是否有一种更正确或更简洁的方法来做同样的查询,这就是我的意思,它看起来尽可能简单。