У меня есть таблица разделов, в которой содержится около 17 записей, принадлежащих одной книге.Значения MySQL COUNT изменяются, когда JOINING
chapters:
--------------------------
| id | book_id | content |
--------------------------
| 1 | 1 | ... |
| 2 | 1 | ... |
| 3 | 1 | ... |
| 4 | 1 | ... |
| 5 | 1 | ... |
| ... | 1 | ... |
--------------------------
Существует также библиотека таблица, которая связывает пользователей к книгам, которые они сохранили:
library:
----------------
| user | book_id |
----------------
| 1 | 1 |
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| ... | 1 |
----------------
можно использовать:
SELECT COUNT(*) FROM chapters WHERE book_id = 1
и таблица правильно выводит 17, потому что книги 1 имеет 17 глав
Если да, то:
SELECT COUNT(*) FROM library WHERE book_id = 1
Я также получаю правильный результат 5, потому что 5 пользователей добавили книгу 1 в свою библиотеку.
Однако я не могу объединить два запроса вместе, используя JOIN. Я хочу, чтобы код SQL, который будет выводить что-то вроде этого:
output:
-----------------------------
| book | chapters | readers |
-----------------------------
| 1 | 17 | 5 |
-----------------------------
Ваша модель пропускает 'books' таблицу, которая должна хранить' book_id', название книги и автор и т.д. Your ' library' table - таблица ассоциаций, созданная для отношений «многие-ко-многим» между книгами и пользователями. – axiac
@axiac Таблица книг не должна хранить автора. – Strawberry
@ Струберри, ты прав. Я сделал ту же ошибку, что и OP :-) – axiac