Tema: Rikiavimas
Autorius: Grzegorz Brzęczyszczykiewicz
Data: 2021-03-06 16:51:32
Yra tokia nedidelė savadarbė DVS.
Joje kiekvienas dokumentas turi ID ir 'follows_id', kuris rodo po kurio 
dokumento turi eiti šis dokumentas. Dokumentų daug, bet dokumentų 
rinkinio pirmo dokumento 'follows_id'==0.

Mano bėda ta, kad ID nedidėja monotoniškai ir įvedus naują dokumentą jis 
gali atsidurti labai pradžioje. Kol kas nenorių įvesti 'sortorder' kaip 
atskiro lauko, manau kad 'linked list' turi šiokių tokių privalumų.

Kaip protingai išrikiuoti dokumentus pagal jų loginę seką?
PHP arba MySQL.

https://stackoverflow.com/questions/29655419/mysql-order-by-fields-parents 
nepadeda, nes ID nedidėja monotoniškai, t.y. pagal šią nuorodą 
'sortorder' gaunu:

SELECT id, project_id, follows_id, CONCAT(CAST(follows_id AS CHAR),'-', 
CAST(id AS CHAR)) AS sortorder FROM `documents` where project_id=25 
ORDER BY sortorder

id	project_id	follows_id	sortorder
280 	25 		0 		0-280
267 	25 		276 		276-267
268 	25 		267 		267-268
281 	25 		280 		280-281
282 	25 		281 		281-282
283 	25 		282 		282-283
285	25 		284 		284-285
276 	25 		285 		285-276


O man reikia:
id	project_id	follows_id	sortorder
280 	25 		0 		0-280
281 	25 		280 		280-281
282 	25 		281 		281-282
283 	25 		282 		282-283
284	25 		283 		283-284
285	25 		284 		284-285
276 	25 		285 		285-276
267 	25 		276 		276-267
268 	25 		267 		267-268

-- 
Grzegorz

Chrząszczyrzewoszyce, powiat Łękołody