У меня есть эти таблицы:
- Users
- id
- Photos
- id
- user_id
- Classifications
- id
- user_id
- photo_id
Я бы хотел заказать пользователей по общему количеству фотографий + классификаций, которыми они владеют.
Я написал этот запрос:
SELECT users.id,
COUNT(photos.id) AS n_photo,
COUNT(classifications.id) AS n_classifications,
(COUNT(photos.id) + COUNT(classifications.id)) AS n_sum
FROM users
LEFT JOIN photos ON (photos.user_id = users.id)
LEFT JOIN classifications ON (classifications.user_id = users.id)
GROUP BY users.id
ORDER BY (COUNT(photos.id) + COUNT(classifications.id)) DESC
Проблема в том, что этот запрос не работает так, как я ожидаю, и возвращает большие числа, тогда как в БД у меня есть только несколько фотографий и классификаций. Возвращает что-то вроде этого:
id n_photo n_classifications n_sum
29 19241 19241 38482
16 16905 16905 33810
1 431 0 431
...