К короткой версии этого вопроса является то, что я хочу выполнить что-то в соответствии с тем, что видно на домашней странице Flickr, когда вы вошли в систему. Он показывает три последних фотографии каждого из них ваших друзей, отсортированных по дате, но сгруппированных друг другу.SQL Последние фотографии из контактов (сгруппированы по контактам)
Вот более подробное объяснение: например, у меня 3 друзей: Джон, Джордж и Андреа. Список, который я хочу, чтобы извлечь должен выглядеть следующим образом:
Джорджу
- Фото - 2010-05-18
- Фото - 2010-05-18
- Фото - 2010-05-12
Джон
- Фото - 2010-05-17
- Фото - 2010-05-14
- Фото - 2010-05-12
Andrea
- Фото - 2010-05-15
- Фото - 2010-05-15
- Фото - 2010-05-15
Друг с самой последней загруженной фотографией находится на вершине bu После этого следуют следующие 2 следующих файла.
Я хотел бы сделать это с MySQL, и на некоторое время я получил здесь:
SELECT photos.user_id, photos.id, photos.date_uploaded
FROM photos
WHERE photos.user_id IN (SELECT user2_id
FROM user_relations
WHERE user1_id = 8)
ORDER BY date_uploaded DESC
Где user1_id = 8
находится в настоящее время вошли в систему пользователя и user2_id
являются идентификаторами друзей. Этот запрос действительно возвращает последние файлы, загруженные контактами пользователя с id = 8, отсортированными по дате. Однако я хотел бы выполнить описанную выше группировку и ограничение.
Надеюсь, это имеет смысл. Заранее спасибо.
Допустимо ли, если вместо трех рядов на одного друга вы получаете три столбца на одного друга, в каждом столбце содержится одна фотография? –
Не совсем. Вы имели в виду GROUP_CONCAT? – janosrusiczki
Нет, но я думаю, что его можно иметь такую строку, как 'userid: 1, photo1_id: 200, photo1_date: 2009-10-01, photo2_id: 167, photo2_date: 2009-08-01, photo3_id: 120, photo3_date: 2009 -06-01'. Аналогичные строки для каждого друга. –