2015-01-16 2 views
0

Ниже приведена копия моего кода, моя главная цель - получить ранг определенных изображений на основе его photo_id. Код ниже работает отлично, но проблема в том, что если есть общие точки связи, эти два изображения получают одинаковый номер ранга. Я действительно хочу, если эти изображения имеют одинаковые общие точки, я хочу ранжировать их по дате. Как я могу это сделать?Рейтинг без дубликата

SELECT uo.*, 
    (SELECT COUNT(DISTINCT ui.total_points) 
    FROM photo_list ui 
      WHERE ui.total_points>= uo.total_points 
      ) AS rank 
    FROM photo_list uo 
    WHERE photo_id = :photo_id 

Вот что моя таблица выглядит следующим образом:

id | photo_id | total_points | date 
1  432cfc  0   1403076412 
2  fsd324  1   1403076413 
3  gd43ds  0   1403076411 

Вот мои результаты желание:

rank | photo_id | total_points | date 
    1  fsd324  1   1403076413 
    2  gd43ds  0   1403076411 
    3  432cfc  0   1403076412 
+0

Добавить 'ORDER BY total_points, date'. Это должно сработать. –

+0

Это не дает ему попробовать –

+0

вы можете предоставить образцы данных и DDL ?? –

ответ

0
select * from (
    SELECT uo.*, 
    (SELECT COUNT(DISTINCT ui.total_points) 
    FROM photo_list ui 
    WHERE ui.total_points>= uo.total_points 
    ) AS rank 
    FROM photo_list uo 
    WHERE photo_id = :photo_id 
    ) as alias 
order by total_points,date; 
+0

Nope не сработало –

+0

Вы хотите отсортировать их с точками, а затем дату? @PimenterDgrc –

+0

Да, но ваш код не работал –

0

Это будет запрос.

SELECT 
    (SELECT COUNT(DISTINCT ui.total_points) 
    FROM photo_list ui 
     WHERE ui.total_points>= uo.total_points 
     ) AS rank,uo.photo_id,uo.total_points,uo.date1 
    FROM photo_list uo 
    ORDER BY rank ASC, date1 ASC 
+1

Я пробовал с вашим Примеры данных. Получите результат, как ожидалось. –

+0

Я только что попробовал, и он по-прежнему возвращает тот же номер ранга –

Смежные вопросы