为何菜单表关联的SQL内连接查询返回零行?
问题分析与解决方案
你的查询返回零行主要有两个关键问题:
1. 字段引用错误使用单引号
在SQL中,单引号'是用来包裹字符串常量的,而不是表字段名。你写的'menu_level2.relation' = 'menu_level1.url'其实是在比较两个固定字符串,而不是比较字段的值——显然这两个字符串不相等,所以没有匹配结果。
正确的写法应该去掉单引号,直接引用字段:
menu_level2.relation = menu_level1.url
2. 表名拼写错误
你的查询里写了menu_leve2,少了一个字母l,应该是menu_level2,这个拼写错误会导致数据库无法正确识别表,也是导致无结果的潜在原因。
修正后的基础查询
SELECT menu_level2.url AS url2, menu_level1.url AS url1 FROM menu_level2 INNER JOIN menu_level1 ON menu_level2.relation = menu_level1.url;
扩展:关联三级菜单的完整查询
如果需要同时关联三级菜单并获取带重音的菜单名,你可以使用如下写法:
SELECT menu_level1.url AS url1, menu_level1.menuname AS name1, menu_level2.url AS url2, menu_level2.menuname AS name2, menu_level3.url AS url3, menu_level3.menuname AS name3 FROM menu_level1 INNER JOIN menu_level2 ON menu_level2.relation = menu_level1.url INNER JOIN menu_level3 ON menu_level3.relation = menu_level2.url;
这个查询会返回完整的三级菜单层级关联结果,同时保留你存储的匈牙利语带重音菜单名。
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

