SQL左连接基于现有值

时间:2014-04-07 14:19:09

标签: mysql sql left-join

尝试根据MySQL DB中的关系进行子菜单过滤。

主要群体:饮料,食物,熟食店,货架 子组:咖啡,茶,薯片,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 DB中的表格是:

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'

我觉得可能有更好的方法来达到预期的效果。也许一个基于a的MySQL查询可能在哪?我对此至少有点难过。

1 个答案:

答案 0 :(得分:1)

我假设父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