@Fragman

Как составить запрос в MYSQL?

Есть 3 таблицы:
sm_admin ( id, identity , sid)
sm_groups (id, name)
sm_admins_groups(admin_id, group_id)
Необходимо выбрать одним запросом все имена групп которые принадлежат админу с выбранными identity и sid,
А вторым запросом все имена групп которые не принадлежат админу с выбранными identity и sid.
Не могу реализовать конструкцию с JOIN для 2 запроса, смог только для 1:
SELECT d.id, d.name FROM sm_admins m JOIN sm_admins_groups r ON m.id=r.admin_id JOIN sm_groups d ON r.group_id=d.id WHERE m.identity = 'STEAM_0:1:427770368' AND m.sid='0'
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `name`
  FROM `sm_groups`
  WHERE `id` IN (
    SELECT `group_id`
      FROM `sm_admins_groups`
      WHERE `admin_id` IN (
        SELECT `id` 
          FROM `sm_admin`
          WHERE `identity` = :identity AND `sid` = :sid
        )
    )

Для второго запроса меняете IN на NOT IN
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
irishmann
@irishmann
Научись пользоваться дебаггером
В чем проблема поставить "неравно" в запрос?
SELECT d.id, d.name 
FROM sm_admins m 
JOIN sm_admins_groups r ON m.id=r.admin_id 
JOIN sm_groups d ON r.group_id=d.id 
WHERE m.identity <> 'STEAM_0:1:427770368' AND m.sid <> '0'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы