Выберите количество из определенного внешнего ключа в SQLite - PullRequest
0 голосов
/ 23 февраля 2012

Я хотел бы создать оператор SQL, который сообщит мне, сколько книг было написано данным автором.

Когда вы знаете authorid (внешний ключ к таблице books), это легко:

select count(*) from books where authorid = 25;
15

Вы видите, что автор с идентификатором 15 написал 15 книг.Можно ли создать утверждение для всех авторов так, чтобы результат был следующим?

author_id, author_name, number_of_books
1          Michael      15
2          Robin        7
...

Ответы [ 3 ]

2 голосов
/ 23 февраля 2012

Это будет запрос GROUP BY:

select author_id, author_name, count(*) as number_of_books 
   from books
   join author on books.author_id = author.id 
   group by author_id, author_name;
2 голосов
/ 23 февраля 2012

Вы можете сделать это с помощью group by предложения:

select 
    a.author_id,
    a.author_name,
    count(*) as number_of_books
from
    authors a inner join
    books b on b.author_id = a.author_id
group by
    a.author_id,
    a.author_name
order by 
    number_of_books
1 голос
/ 23 февраля 2012
SELECT
    books.author_id, authors.author_name, COUNT(books.author_id) AS number_of_books
FROM
    authors INNER JOIN books ON books.author_id = authors.id
GROUP BY
    author_name;

Кроме того, убедитесь, что столбец books.author_id не равен NULL, иначе производительность снизится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...