@tytar

Как выбрать все записи из таблицы а которые весь список совпадении из таблицы b?

Добрый день!
Есть две таблицы a и b и между ними many to many
как выбрать все записи из таблицы a которые имеют полный набор записей из b, например ['foo', 'bar', 'baz'], Записи а у которых только foo или bar отсеять
  • Вопрос задан
  • 213 просмотров
Пригласить эксперта
Ответы на вопрос 2
@MoonMaster
Программист и этим все сказано
Может быть вам поможет Instersect
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SELECT `a`.*
  FROM `a`
  JOIN (
    SELECT `a_id`, COUNT(*) AS `count_ab`
      FROM `a_to_b`
      GROUP BY `a_id`
  ) AS `x` ON `x`.`a_id` = `a`.`id`
  JOIN (
    SELECT COUNT(*) AS `count_b`
      FROM `b`
  ) AS `b` ON `b`.`count_b` = `x`.`count_ab`

Будет работать, если записи в таблице связи уникальные, то есть не встречается повторяющихся пар (`a_id`, `b_id`)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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