代码之家  ›  专栏  ›  技术社区  ›  Aishwaryas

join query mysql中的group_concat问题

  •  -1
  • Aishwaryas  · 技术社区  · 6 年前

    我有一个join查询,在这里我留下join 2个表,比如 tab_-sector tab_-sector_-subdivisions。我在第一个表中有记录,在第二个表中可能有也可能没有相应的记录。我加入这些表的方式是,它应该返回第一个表的所有行和第二个表的匹配行。另外,如果第一个表中的一行在第二个表中有多条记录,则它应返回为 group_concat(field_name). 。但我的查询没有按我需要的方式返回。

    以下是没有组“concat”的查询:

    select tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,tab_sector_subdivisions.subdiv_id
    从制表符扇区
    左连接选项卡\扇区\细分
    在选项卡“Sector”上,单击“Subdivisions.Sector”=tab“Sector.Sector”,其中,选项卡“Sector.Active='Y'
    

    结果是:

    对于ID 20,您可以看到两行。我需要的是单行,但是subdiv_idas(19,20)。然后我在查询中使用了group_concat,比如:

    select tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,group_concat(tab_sector_subdivisions.subdiv_id)
    从制表符扇区
    左连接选项卡\扇区\细分
    在选项卡“Sector”上,单击“Subdivisions.Sector”=tab“Sector.Sector”,其中,选项卡“Sector.Active='Y'
    
    
    

    结果是:

    我的另外两个记录不见了。我也希望在我的结果中出现这些行。

    有人能帮我解决这个问题吗?事先谢谢。GROUP_CONCAT(field_name).但我的查询没有按我需要的方式返回。

    以下是不带组“concat”的查询:

    SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,tab_sector_subdivisions.subdiv_id 
    FROM tab_sector 
    LEFT JOIN tab_sector_subdivisions 
    ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'
    

    结果是: enter image description here

    对于ID 20,您可以看到两行。我只需要一排subdiv_id作为(19,20).然后我在查询中使用了group_concat,比如:

        SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,GROUP_CONCAT(tab_sector_subdivisions.subdiv_id) 
    FROM tab_sector 
    LEFT JOIN tab_sector_subdivisions 
    ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'
    

    结果将是:

    enter image description here

    我的另外两个记录不见了。我也希望在我的结果中出现这些行。

    有人能帮我解决这个问题吗?事先谢谢。

    2 回复  |  直到 6 年前
        1
  •  1
  •   ScaisEdge    6 年前

    SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc
        ,tab_sector.sector_image,group_concat(tab_sector_subdivisions.subdiv_id )
    LEFT JOIN tab_sector_subdivisions 
            ON tab_sector_subdivisions.sector_id = tab_sector.sector_id 
                  AND tab_sector.active = 'Y'
    GROUP BY  tab_sector.sector_id,tab_sector.sector_title,
         tab_sector.sector_desc, tab_sector.sector_image
    
        2
  •  0
  •   Satya Krishna    6 年前

      SELECT tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image,GROUP_CONCAT(tab_sector_subdivisions.subdiv_id) 
    FROM tab_sector 
    LEFT JOIN tab_sector_subdivisions 
    ON tab_sector_subdivisions.sector_id = tab_sector.sector_id WHERE tab_sector.active = 'Y'
    group by tab_sector.sector_id,tab_sector.sector_title,tab_sector.sector_desc,tab_sector.sector_image;