2013-07-03 65 views
0

我有一个数据库,这里有我需要的表: MySQL的 - 多个内部连接和CONCAT

  • journal_editors
  • 就像这里所描述的结构

    • special_issues
    • 期刊:

      • 我有特殊的问题,每个speci问题属于日记,所以在表special_issue,我有journal_id
      • 对于每个日记,我有编辑(一个或多个)。通过匹配特定journal_id的编辑器,可以从journal_editors表中获取此信息。

      我想得到的是每个特刊,期刊编辑的期刊本专刊所属。

      对于这一点,我想Concat的编号的,所以在最后我会有这样的事情:

      special issue editors 
          si1   1,5,10 
          si2   14,25,5 
      

      等...

      我tryied说:

      SELECT si.name, CONCAT(users.firstname,' ', users.lastname) AS journal_editors 
      FROM `special_issues` si 
      INNER JOIN journal_editors jeds ON si.journal_id = journal_id 
      WHERE si.journal_id =1 GROUP BY si.name" 
      

      非常感谢您提前。

    回答

    2
    SELECT si.name, GROUP_CONCAT(users.firstname,' ', users.lastname) AS journal_editors 
    FROM special_issues si 
    INNER JOIN journal_editors jeds ON si.journal_id = journal_id 
    WHERE si.journal_id =1 
    GROUP BY si.name 
    

    Manual entry

    +0

    非常感谢你 –

    +0

    一个问题tombom,我在quey中增加了另一个内连接,现在,我的journal_editors被复制。你知道如何解决这个问题吗? –

    +0

    恐怕很难理解你的意思。明确解决问题吗?像'GROUP_CONCAT(DISTINCT CONCAT(users.firstname,'',users.lastname))'。如果没有,请发送查询。 – fancyPants

    1
    SELECT si.name, GROUP_CONCAT(users.firstname,' ', users.lastname) AS journal_editors 
        FROM `special_issues` si 
    INNER 
        JOIN journal_editors jeds ON si.journal_id = jeds.journal_id 
    WHERE si.journal_id =1 
    GROUP BY si.name 
    
    +0

    非常感谢。 –