на sqlite, у меня есть таблицы
papers: rero_id, doi, year
writtenby: rero_id, authorid, instid
authors: author_id, name, firstname
inst: inst_id, name, see_id
inst - это таблица институтов: университетов и так далее.Каждая строка в письменном виде дает бумагу, автора, учреждение, к которому этот автор был прикреплен в то время.Может быть больше чем одно учреждение и парная бумага, авторид повторяется для каждого учреждения.Для данного автора я хочу получить список и список учреждений, с которыми он сотрудничал.Для списка, который я пробовал
SELECT inst.name as loc
FROM (
(authors INNER JOIN writtenby ON authors.authorid =
writtenby.authorid)
INNER JOIN writtenby AS writtenby_1 ON writtenby.rero_id =
writtenby_1.rero_id
)
INNER JOIN authors AS auth_1 ON writtenby_1.authorid =
auth_1.authorid
inner join inst on writtenby_1.instid = inst.inst_id
WHERE (authors.name) ="Doe" AND (authors.firstname)= "Joe"
ORDER BY loc
Я получил список, который выглядит нормально.
Теперь я хотел бы перегруппировать названия этих учреждений и подсчитать их.Я пробовал
SELECT inst.name, count(inst.name)
FROM (
(authors INNER JOIN writtenby ON authors.authorid =
writtenby.authorid)
INNER JOIN writtenby AS writtenby_1 ON writtenby.rero_id =
writtenby_1.rero_id
)
INNER JOIN authors AS auth_1 ON writtenby_1.authorid =
auth_1.authorid
inner join inst on writtenby_1.instid = inst.inst_id
GROUP BY inst.name
HAVING (authors.name) ="Doe" AND (authors.firstname)= "John"
У меня всего три строки, а не количество учреждений, перечисленных в первом запросе.Спасибо, что поправили меня!
Франсуа