MySQL查询多个表是辅助表多个项目?

时间:2011-06-24 19:43:18

标签: mysql join

我有一个查询,我目前从2个表中获取信息:

SELECT g.name 
FROM site_access b 
    JOIN groups g 
        ON b.group_id = g.id 
WHERE b.site_id = 1 
ORDER BY g.status ASC

现在我想要另一个包含此查询的表,但是这一个表会返回多于1行吗?

我所能做的只是从该表中拉出1行,我想要的字段是一个字符串字段,只要所有匹配都可以在此查询中拉到一起,就可以将结果与分隔符连接起来。

如果您需要有关表格的更多信息或任何事情,请随意说我不认为这是必需的,因为这主要是如何从连接/选择查询中提取多行的示例。

更新上述查询的结果:

Admin
Member
Banned

现在使用我的第3个表,每个访问都有允许使用的命令,因此第3个表将列出每个人可以访问的命令,例如:

Admin - add, del, announce
Member - find
Banned - none

UPDATE2:

  • site_access

    site_id
    group_id
    
  • id
    name
    status
    
  • groups_commands

    group_id
    command_id
    
  • 命令

    id
    name
    

1 个答案:

答案 0 :(得分:2)

SELECT g.name, GROUP_CONCAT(c.command) AS commands
FROM site_access b 
    JOIN groups g 
        ON b.group_id = g.id 
    JOIN groups_commands gc
        ON g.id = gc.group_id
    JOIN commands c
        ON gc.command_id = c.id
WHERE b.site_id = 1 
GROUP BY g.name
ORDER BY g.status ASC