Сравнить все записи отношения nn - PullRequest
0 голосов
/ 13 июня 2019

У меня есть три таблицы, A, B и C

Таблицы A и B имеют идентификатор и другие поля, таблица C представляет собой отношение nn для A и B (C содержит только IDS для A и B спервичный ключ (id_a, id_b) и внешний ключ).

Теперь мне нужно проверить, имеет ли строка A те же ассоциации, что и другая строка A.

EXAMPLE

A = [id_a] = [1,2,3,4]
B = [id_b] = [1,2,3,4]

C = [id_a, id_b] = [[1,1],[1,3],[2,1],[2,3],[3,3]]

В этом случае мне нужно извлечь только записи, где id_a равны 1 и 2, поскольку они оба связаны с одной и той же строкой B (id_b 1 и 3).

id_a = 3 нетоже самое, что id_a = 1/2, потому что он не связан с id_b = 1

Это для нового сервера Ubuntu 18.04, работающего на MySQL, PHP 7 (стек LAMP)

Примерс id_a = 1

SELECT id_a
FROM C
WHERE id_b IN (SELECT id_b FROM B WHERE id_a=1)
GROUP BY id_a;

1 Ответ

0 голосов
/ 13 июня 2019

Самый простой метод для точного соответствия использует group_concat():

select c.id_a
from (select c.id_a, group_concat(c.id_b order by c.id_b) as id_bs
      from c
      group by c.id_a
     ) c join
     (select group_concat(c.id_b order by c.id_b) as id_bs
      from c
      where c.id_a = @id_a
     ) ac
     on c.id_bs = ac.id_bs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...