【问题标题】:GROUP_CONCAT && left outer join on 1 table?GROUP_CONCAT && 左外连接在 1 个表上?
【发布时间】:2012-07-28 21:56:52
【问题描述】:

我有 1 个带有菜单标签的表。我需要一个查询来获取父标签和 UnderMenu 标签。当我执行此操作时:

  SELECT es.Label MenuLabel, m.Label UnderLabel 
  FROM books_menu es
  LEFT JOIN books_menu m ON es.ID = m.MenuParentID 
  WHERE es.ParentID =1 
  AND m.Type='under'
  AND es.Type='main' 
  LIMIT 0 , 30

一切正常,但 MenuLabel 显示在每条记录上。如下所示:

  MenuLabel    UnderLabel
  Home         1
  Home         2
  Home         3
  Contacts     4

当我执行时:

  SELECT es.Label MenuLabel, GROUP_CONCAT(m.Label) AS UnderLabel 
  FROM books_menu es
  LEFT JOIN books_menu m ON es.ID = m.MenuParentID 
  WHERE es.ParentID =1 
  AND m.Type='under'
  AND es.Type='main' 
  LIMIT 0 , 30

我明白了:

      MenuLabel    UnderLabel
       Home         1,2,3,4

我怎样才能得到这个:

   MenuLabel    UnderLabel
   Home         1,2,3
   Contacts     4

谢谢:)

【问题讨论】:

    标签: php mysql join group-concat


    【解决方案1】:

    你需要有GROUP BY子句:

    SELECT es.Label MenuLabel, GROUP_CONCAT(m.Label) AS UnderLabel 
    FROM books_menu es
    LEFT JOIN books_menu m ON es.ID = m.MenuParentID 
    WHERE es.ParentID =1 
          AND m.Type='under'
          AND es.Type='main' 
    GROUP BY MenuLabel    
    LIMIT 0 , 30;
    

    【讨论】:

      猜你喜欢
      • 2018-09-04
      • 2013-08-25
      • 1970-01-01
      • 2016-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2022-01-20
      相关资源
      最近更新 更多