У меня есть следующие две таблицы,SQL объединить две таблицы и получить кумулятивный подсчет
таблица 1:
id document
--------------
A3 B2
A3 B400
A5 B100
A5 B500
A7 B200
A8 B6
A8 B2
A8 C1
A8 B3
Таблица 2:
id name
--------------
A1 Jack
A2 Martin
A3 Jack
A4 Thomas
A5 Jack
A6 Thomas
A7 Thomas
A8 John
A9 John
A10 Kate
мой фильтр является следующее, что следует сравнить колонку document
и фильтр на основе этого списка:
WHERE table1.document IN (B2,B400,B100,B500,B200,B6,B2,B3)
результат должен быть как:
name freq
--------------
Jack 4
Thomas 1
John 3
объяснения: Сначала я фильтровать документы у меня есть в моей статье WHERE IN
. Затем я посмотрю на соответствующее значение id
в столбце table1 и . Посмотрите, что id
во второй таблице, первом столбце, и получите соответствующий name
для этого идентификатора и поместите его в таблицу результатов.
Например, А3 повторяется дважды, и его соответствующий name
является Jack
, так что ДО Теперь Джек имеет значение 3 в freq
колонке, но со следующего идентификатора в мой таблица1 А5, повторяется дважды, что случается, чтобы иметь Jack
как его название, так что тогда jack
будет иметь 4 в качестве частоты.
Для следующего значения в таблице 1 A7 имеет соответствующее имя Thomas
, так как A7 повторяется один раз, и ни один другой идентификатор, соответствующее ему имя Thomas , отсутствует в моем списке таблицы1, тогда у Тома будет частота 1 (I не имеют A4, ни A6 в таблице 1).
И в последнем примере у меня A8 повторяется 4 раза в таблице1, но, поскольку мой список в WHERE IN
не содержит C1
, так что запись будет отфильтрована и не засчитана, поэтому у меня осталось три A8, чьи имя John
, а затем он получает значение 3.
здесь является demo данных.
спасибо за очаровательный ответ. – passion
@marcel Привет, я постараюсь вернуться к вам для остальных вопросов, как только найду свободное время. Ваши сообщения всегда интригуют. –