У меня есть три таблицы: A
, B
, C
. B
имеет отношение «многие ко многим» с A
и C
.Запрос для строк, которые имеют набор ассоциаций
A >-<B>-< C
Пусть каждая таблица имеет столбец первичного ключа с именем ID, а таблицы присоединяются два столбца [a_id, b_id] и [b_id, c_id].
Этот же ряд в B
может быть связан с обоими строками в A
и C
. Достаточно просто найти строки в C
, которые разделяют определенную строку в B
(серия внутренних объединений).
Учитывая ряд идентификатор A
, я хотел бы запросить для всех строк в C
, что доля всех строки B
, связанные с этой строкой в A
:
select id,
(select count(*) from c
inner join b_c on c.id = b_c.c_id
) as c_group,
(select count(*) from c
inner join b_c on c.id = b_c.c_id
inner join b on b.id = b_c.b_id
inner join a_b on b.id = a_b.b_id
where a_id = ?
) as a_c_group
from c
where c_group <= a_c_group;
Можно ли это сделать с помощью SQL? Я работаю в MySQL, поэтому решение, специфичное для MySQL, будет в порядке.
Да, это может быть сделано в SQL. Покажите формат таблиц, с которыми вы работаете, и запросы, которые вы уже создали. –
Отредактировано, что включает всю соответствующую информацию. –
@ Gordon Отправил одну из моих попыток. –