Dodaj numerički primarni ključ (najbolje automatski brojač) i čuvaj posebno vrednosti, a posebno poredak. Npr:
Tabela `podaci`:
Code:
id ime
1 Miloš
2 Đura
4 Žika
5 Pera
6 Mika
...
PK je id.
Tabela `poredak`:
Code:
korisnik_id mesto podaci_id
...
322 1 5
322 2 1
323 1 1
323 2 4
323 3 2
...
PK tabele poredak je (korisnik_id, mesto).
FK su korisnik_id (nad nekom tabelom korisnika) i podaci_id (nad tabelom podaci). Oba treba da brišu unos kada se referencijalni unos obriše ili promeni.
Odgovarajući poredak za korisnika 323 onda lako dobijaš sa:
Code:
SELECT *
FROM podaci
LEFT JOIN (
SELECT *
FROM poredak
WHERE korisnik_id = 323
) AS poredak ON ( podaci.id = poredak.podaci_id )
ORDER BY poredak.mesto ASC , podaci.id ASC
Nove vrednosti ili kada korisnik nije odredio poredak pojavljuju se na vrhu pre svih u redosledu kolone id u tabeli podaci. Ako ti trebaju na kraju, upit se lako promeni. Možeš da dodaješ i uklanjaš unose iz podaci jer ti PK garantuje vezu sa poredak.
Primer rezultata:
Code:
5 Pera NULL NULL NULL
6 Mika NULL NULL NULL
1 Miloš 323 1 1
4 Žika 323 2 4
2 Đura 323 3 2
Ne isključujem da postoji i bolje rešenje.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja