MySQL - лучшая практика для получения строк с количеством деталей

0

У меня есть 2 таблицы:

  1. мастер-таблица "писатели"
  2. подробнее таблица "книги"

У каждого писателя есть список книг, которые она написала. Я хочу, чтобы все авторы писали о количестве книг, которые каждый из них написал. Есть ли способ сделать это в одном запросе?

Теги:

2 ответа

0
Лучший ответ

Я считаю, что это сработает для вас. Не уверен, есть ли более эффективный способ:

select id, (select count(*) from books where books.writer_id = writers.id ) count from writers
0

Я предпочитаю следующую не-вложенную версию:

SELECT
    writers.id, 
    writers.name,
    count(books.*) as BookCount
FROM
    writers
    LEFT JOIN books ON writers.id = books.writer_id
GROUP BY
    writers.id,
    writers.name
  • 0
    Это хорошо, но не получается, если у автора нет книг. Я не получу записи писателя с BookCount = 0
  • 0
    Я поменяю его на левое соединение. Это даст вам это. Вы не указали это. Простое изменение.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню