Сортировка соединения «один ко многим»

#mysql

#mysql

Вопрос:

Допустим, у меня есть две таблицы. Альбомы и картинки. Записи в таблице Albums имеют отношение «один ко многим» с записями в таблице Pictures.

Мне нужно иметь возможность получить количество альбомов x и количество изображений, связанных с каждым альбомом, чтобы я мог сортировать по количеству изображений.

Каков наилучший способ сделать это? Можно ли это сделать с помощью одного запроса или мне нужно будет выполнить несколько запросов?

Комментарии:

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

2. Было бы неплохо иметь фактические изображения, а также число, но, похоже, это нужно будет делать в отдельных запросах..

Ответ №1:

Вы должны иметь возможность использовать агрегатную функцию / групповое предложение для выполнения этого, например:

 SELECT a.name, COUNT(p.id)
FROM Albums a LEFT JOIN Pictures p on a.id = p.album_id
GROUP BY a.name
ORDER BY COUNT(p.id) DESC
LIMIT 10