Bei Artikellisten soll in der Detailansicht die Position des Datensatzes innerhalb der Liste ermittelt werden, um z.B. diese Informationen für ein eigenes Paging zu verwenden. Dies läßt sich einfach mit einem einzigen SQL-Statement bewerkstelligen:
SELECT a.id, a.name, a.sorting, (
SELECT COUNT( * )
FROM list_table b
WHERE b.sorting < a.sorting
ORDER BY b.sorting
) +1 AS position
FROM list_table a
WHERE a.id = 19
ORDER BY a.sorting
Zunächst wird neben der ID und dem Namen auch das Sortierungsfeld ausgelesen. Der Wert in a.sorting ist entscheidend für das Subselect, in dem gezählt wird, wie viele Datensätze kleiner als a.sorting vorkommen. Der Wert aller Datesätze vor dem gesuchten muss nur noch um eins erhöht werden.
Subselects sind ab MySQL Version 4.1 möglich.