mysql - SQL Left join 基于现有值

标签 mysql sql left-join

尝试根据 MySQL 数据库中的关系制作子菜单过滤器。

主要组别:饮品、食品、熟食店、货架 子组:咖啡、茶、薯片、Asas

当使用我的 LEFT JOIN 查询时,我得到 asas 按钮多次出现。

很明显,我没有以正确的方式执行此操作,实现预期结果的理想方法是什么。

基本上期望的结果是当您单击 Drink 按钮时,子导航会过滤并仅显示饮料。整个项目都预加载了 ajax,并在很大程度上依赖于 ajax 和类。

目前这里的明显问题是多次出现 asas 按钮……不是预期的结果。

Blue=Main Menu / Purple= Sub Menu

MySQL

$sql7x = " SELECT * FROM items_sub_section_list 
                LEFT JOIN item_groups ig ON (items_sub_section_list.item_sub_sec_id=ig.item_sub_sec_id)
                WHERE items_sub_section_list.item_sub_sec_id>0
                ORDER BY items_sub_section_list.item_sub_sec_id ASC "; 

我在 MySQL 数据库中的表是:

items_section_list: 'sec_id' , 'title'

items_sub_section_list:'item_sub_sec_id','title'

item_groups: 'item_id' , 'section_id' , 'item_sub_sec_id'

我觉得可能有更好的方法来达到预期的结果。也许是基于 for each where 的 MySQL 查询?至少我对此有点难过。

最佳答案

我假设父 ID 在子部分表中,子部分 ID 在单个项目表中。我还假设一个部分只有一个父组,并且单个项目仅在一个子部分中。

SELECT ig.section_id, ig.select_textName,
  isl.sec_id, isl.sec_textName,
  issl.item_sub_sec_id, issl.individualItemName
FROM item_groups ig  
JOIN ON items_section_list isl (ig.section_id = isl.section_id)
LEFT JOIN ON items_sub_section_list issl (isl.sec_id = issl.sec_id)
            WHERE issl.item_sub_sec_id>0
            ORDER BY ig.select_textName, isl.sec_textName, issl.individualitemName,   
            issl.item_sub_sec_id ASC

关于mysql - SQL Left join 基于现有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22915109/

相关文章:

sql - 从不同列中检索数据序列

SQL Server 查询 : Union vs Distinct union all performance

mysql - 使用 LEFT JOIN 的表标识符

php - 用逗号分隔值连接两个表

mysql - 比较 MySQL 中日期的年份和月份部分的最佳方法?将其作为字符串来安全吗?

java - 使用java将大量数据存储到mysql的最佳方法

mysql - 需要有关处理四个表的 MySQL JOIN 的帮助

python - 将 .sql 数据库转储转换为 pandas 数据框

sql - 使用 bacpac 导入数据层应用程序

mysql - 连接给出两行而不是一行