Hi > mysql> select id,cat from table where cat=(select cat from table where id=51); > +---------+------+ > | id | cat | > +---------+------+ > | 40 | FLK | > | 41 | FLK | > | 42 | FLK | > | 44 | FLK | > | 45 | FLK | > | 46 | FLK | > | 47 | FLK | > | 48 | FLK | > | 49 | FLK | > | 50 | FLK | > | 51 | FLK | > | 52 | FLK | > | 53 | FLK | > | 54 | FLK | > | 55 | FLK | > | 56 | FLK | > | 57 | FLK | > | 58 | FLK | > | 59 | FLK | > | 60 | FLK | > +---------+------+ > 20 rows in set (0.02 sec) > now I can select the whole cat when I enter an ID that is fine! but the query should > stop at id=$id or in other words in the end it should POINT to id=$id > in the above example the last record would be the record with id=51 > do I need another SELECT here? If I understand that correctly, you only need to add the extra condition to the WHERE clause of the main query. So: SELECT id, name, cat FROM table WHERE cat = (SELECT cat FROM table WHERE id = $ID) AND id <= $ID; This should display all rows, before and including the row with the same 'cat' as 'id' has. For your example of $ID = 51 it should display: +---------+------+ | id | cat | +---------+------+ | 40 | FLK | | 41 | FLK | | 42 | FLK | | 44 | FLK | | 45 | FLK | | 46 | FLK | | 47 | FLK | | 48 | FLK | | 49 | FLK | | 50 | FLK | | 51 | FLK | +---------+------+ Niel -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php