Chcę wyciągnąć informację, gdzie są aktualnie terminale. Prowadzona jest historia zmian położenia.

Dosyć typowy problem, ale sporo się z nim męczyłem. Może się komuś przyda.

3 tabele
TERMINALE - id, nrser
POLOZENIA - id, nazwa
HISTORIA- id, id_terminale, id_polozenia, data

  1. SELECT id_terminale, id_punkty, `data` , nrser, nazwa
  2. FROM historia s1, terminale, punkty
  3. WHERE terminale.id = s1.id_terminale AND punkty.id = s1.id_punkty AND `data` = (
  4. SELECT MAX( s2.DATA )
  5. FROM historia s2
  6. WHERE s1.id_terminale = s2.id_terminale )
  7. ORDER BY ".$sort." ".$r);


zmienna $sort wg. jakiej kolumny sortujemy
zmienna $r może być ASC lub DESC

Otrzymamy
Datę ostatniej zmiany położenia, oraz nazwę aktualnego położenia
+-----------------+------------+-------+------+---------+
| id_terminale | id_punkty | data | nrser | nazwa |
+-----------------+------------+-------+------+---------+