group и order

Сенсей

Новичок
group и order

Код:
select user_photo_id,
user_photo_user_id,
user_photo_desc,
user_photo_file
 from spnuke_users_photos
 group by user_photo_user_id
 order by user_photo_id DESC limit 8

user_photo_user_id - ID пользователя, не уникально

Вобщем вывожу последние добавленные фотографии...

Но group группирует по своим правилам не шлядя на order

Например если имеем 3 записи в базе с данными :

user_photo_user_id = 3 user_photo_id=1

user_photo_user_id = 3 user_photo_id=2

user_photo_user_id = 3 user_photo_id=3

Нужно что бы после group by user_photo_user_id мы имели строку в езультатах с user_photo_id=3

А мускул на это не смотрит и сам как то сортирует...

Как я не извращался с max, having - не выходит ничего :(
 

_RVK_

Новичок
1. CREATE TEMPORARY TABLE temp SELECT * FROM t2 ORDER BY f2 DESC
2. SELECT * FROM temp GROUP BY f1

Ничего лучше в голову не пришло...
 

chira

Новичок
Код:
CREATE TEMPORARY TABLE tt AS
SELECT user_photo_user_id, max(user_photo_id) user_photo_id
FROM spnuke_users_photos
GROUP BY user_photo_user_id;
SELECT a.*
FROM spnuke_users_photos a,tt
WHERE a.user_photo_user_id=tt.user_photo_user_id
 AND a.user_photo_id=tt.user_photo_id;
 

Сенсей

Новичок
А как для мускула... нервничать не будет?
Предполагается что в таблице фоток записей будет в 3 раза больше чем в иаблице пользователей... то есть если их 1000 - то записей в фоток таблице будет 3000 и это число будет постоянно расти...

chira
Этот запрос будет считать как 3 запроса к базе... или как один с вложенными запросами?
 

chira

Новичок
Сенсей
если у тебя версия MySQL 4.1.x, то можно сделать одним (с вложенным) запросом, если меньше, то двумя ...
где ты увидел 3 запроса?
 
Сверху