MySQL запрос для нескольких таблиц, являющихся вторичными таблицами несколько элементов? - PullRequest
2 голосов
/ 24 июня 2011

У меня есть запрос, в котором я в настоящее время получаю информацию из 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

ОБНОВЛЕНИЕ2:

  • site_access

    site_id
    group_id
    
  • группы

    id
    name
    status
    
  • groups_commands

    group_id
    command_id
    
  • команды

    id
    name
    

1 Ответ

2 голосов
/ 24 июня 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...