* Nikolas
> The problem with LIMIT is that this table is not the same always, the 
> ordering depends on data that changes.
> 
> I am ordering a table that contains webpages by the number of times they
> have been visited. Then, for a specific page of them, I want to say in 
> which position of popularity it is.
> 
> I think, in the meantime, I found the way. I will make a COUNT of all 
> pages, then I will make a COUNT of the pages that have been visited 
> less times than the one I want and then I will add 1 to that. Am I in 
> the right direction. Thanks for your interest.

This can be done with a single select:

mysql> create table pages (pageno int,visits int);
Query OK, 0 rows affected (0.05 sec)

mysql> insert into pages values (1,3),(2,4),(3,1),(4,2),(5,1),(6,3),(7,4);
Query OK, 7 rows affected (0.01 sec)
Records: 7  Duplicates: 0  Warnings: 0

mysql> select * from pages order by visits desc;
+--------+--------+
| pageno | visits |
+--------+--------+
|      2 |      4 |
|      7 |      4 |
|      1 |      3 |
|      6 |      3 |
|      4 |      2 |
|      3 |      1 |
|      5 |      1 |
+--------+--------+
7 rows in set (0.03 sec)

mysql> select count(*)+1 as rank from pages,pages p2 
    -> where p2.pageno=1 and pages.visits>p2.visits;
+------+
| rank |
+------+
|    3 |
+------+
1 row in set (0.00 sec)

mysql> select count(*)+1 as rank from pages,pages p2 
    -> where p2.pageno=4 and pages.visits>p2.visits;
+------+
| rank |
+------+
|    5 |
+------+
1 row in set (0.00 sec)

-- 
Roger
query

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to