У меня есть проблема, похожая на несколько функций agg , с той разницей, что я покрываю более одной таблицы:
Я хочу объединить в два раза по набору таблиц (см. Схему внизу):
Текущий неверный результат:
(Во втором столбце фактически перечислены элементы третьего столбца.)
АВТОМАТИЗИРОВАТЬ 2 HD,agt
АВТОМАТИЗИРОВАТЬ 2 HD,coordin
АВТОМАТИЗИРОВАТЬ 2 HD,coordin
АВТОМАТИЗИРОВАТЬ 5 circum,predic,HD,1-compl,--
АВТОМАТИЗИРОВАТЬ 2 predic,HD
АВТОМАТИЗИРОВАТЬ 3 predic,circum,HD
Желаемый результат:
АВТОМАТИЗИРОВАТЬ 1 HD,agt
АВТОМАТИЗИРОВАТЬ 2 HD,coordin
АВТОМАТИЗИРОВАТЬ 1 circum,predic,HD,1-compl,--
АВТОМАТИЗИРОВАТЬ 1 predic,HD
АВТОМАТИЗИРОВАТЬ 1 predic,circum,HD
Первый столбец - глагол.
В третьем столбце должно быть указано использование глагола в первом столбце.
Второй столбец должен подсчитать, сколько раз происходит это конкретное использование.
select vp.verb, count(), group_concat(label.name) relation
from vp, label, vp_terminal, terminal
where label.idlabel==terminal.label_id
and vp_terminal.vp_id==vp.idvp
and vp_terminal.terminal_id==terminal.idterminal
group by vp.verb, vp.idvp
order by verb, relation
Схема базы данных:
Один глагол (фраза) содержит несколько наборов терминалов (= слова).
Фактические слова не появляются в этом результате, только их грамматическое отношение к глаголу (HD, agt, координировать, предсказать ...).
Набор отношений определяет одно использование фразы глагола и обозначается одной строкой с подсчитанной частотой (но неверно).
Вывод текущего запроса (неверно):
