1 (изменено: kolxoznik1, 2012-01-30 03:14:57)

Тема: Нахождение первой записи в таблице (SQL)

Есть у меня запрос, который цепляет разную информацию с разных таблиц и выводит, главной является таблица "images" с фотографиями пользователей, решил прикрутить маленькую иконку показывающию что фото первое, только вроде как не хватает данных из запроса для этого.

Вот мой запрос :

 $sql = "SELECT username as user, p.image as user_image, i.image, i.id as image_id, i.description as text, UNIX_TIMESTAMP(i.date) as image_date, COALESCE ( imgcount.cnt, 0 ) as comments
            FROM users u
            LEFT JOIN images i ON i.user_id = u.id
            LEFT JOIN images p ON p.id = (SELECT b.id FROM images AS b where u.id = b.user_id ORDER BY b.id DESC LIMIT 1)
            LEFT JOIN (SELECT image_id, COUNT(*) as cnt FROM commentaries GROUP BY image_id  ) imgcount ON i.id = imgcount.image_id
            WHERE i.user_id = 3
            ORDER BY i.date DESC";

вот что он выводит:

[images_list] => Array
    (
        [0] => Array
            (
                [user] => 3333
                [user_image] => http://127.0.0.1/auth_system_1/upload_images/24/24_nsm5rixy14lexm9cy15wzyg9u_224.jpg
                [image] => http://127.0.0.1/auth_system_1/upload_images/224/224_nsm5rixy14lexm9cy15wzyg9u_224.jpg
                [image_id] => 5
                [text] => 
                [image_date] => 7 hours, 1 minute
                [comments] => 2
            )

        [1] => Array
            (
                [user] => 3333
                [user_image] => http://127.0.0.1/auth_system_1/upload_images/24/24_nsm5rixy14lexm9cy15wzyg9u_224.jpg
                [image] => http://127.0.0.1/auth_system_1/upload_images/224/224_gfbyjh6zf66g914e28bsfdkuf_f4d.jpg
                [image_id] => 3
                [text] => 
                [image_date] => 20 hours, 50 minutes
                [comments] => 0
            )

        [2] => Array
            (
                [user] => 3333
                [user_image] => http://127.0.0.1/auth_system_1/upload_images/24/24_nsm5rixy14lexm9cy15wzyg9u_224.jpg
                [image] => http://127.0.0.1/auth_system_1/upload_images/224/224_80jrg3z0xrh9isskc3yuhtqh1_163.jpeg
                [image_id] => 1
                [text] => test1
                [image_date] => 1 day, 22 hours
                [comments] => 0
            )

    )

Таблица images имеет следующие поля:

  • id

  • user_id

  • image

  • date



Сказать прямо как реализовать такой функционал нет идеи точной.
1) Как вариант выводить запросом доп. строку которая показывала 1 для фото первого и для всех остальных 0
Пытался такой запрос прикрутить к этому не вышло ...
2) вывести через подзапрос из таблицы "images" через order by date desc 1 фото пользователя и после записывать ид ... ну а там сравнивать данный id с id фото и если все хорошо ставить иконку

другой вариант пока в голову не лезет, подскажите как сделать буду рад любой идеи, тем более решению

2

Re: Нахождение первой записи в таблице (SQL)

Не вижу смысла делать такие головоломки. Один запрос к таблице пользователей, один к таблице картинок. С массивами данных будет проще разобраться.