Robis Posted March 5, 2005 Report Share Posted March 5, 2005 Sveiki! Kā es varu dabūt līdzīgu ciparu, īstenībā doma tāda: ir lauks "cipars", kuram var būt integer vērtība! Kā lai izdaru tā, ka lai man viņš atrod konkrētu ierakstu, kura "cipars" ir tuvakais uz leju no manis meklētā! Vai arī tuvākais uz augšu! Pieņemsim, laukam cipari ir vērtības: 1, 3, 4,5,9,10,16 Tagad ja man ir cipars 5, tuvākais uz leju būs 4, bet uz augšu 9! Tā lūk! Link to comment Share on other sites More sharing options...
bubu Posted March 5, 2005 Report Share Posted March 5, 2005 uz augšu: SELECT cipars FROM tabula WHERE cipars>$dotais ORDER BY cipars LIMIT 1 uz leju: SELECT cipars FROM tabula WHERE cipars<$dotais ORDER BY cipars DESC LIMIT 1 Tik ņem vērā gadījumu, kad kverijs neatgriež neko - nav attiecīgā cipara. Link to comment Share on other sites More sharing options...
Robis Posted March 6, 2005 Author Report Share Posted March 6, 2005 Kāpēc tad kverijs neko neatgriež? Link to comment Share on other sites More sharing options...
bubu Posted March 6, 2005 Report Share Posted March 6, 2005 Pieņemsim, laukam cipari ir vērtības:1, 3, 4,5,9,10,16 Kas uz leju būs no cipara 1, vai uz augšu no 16? Link to comment Share on other sites More sharing options...
Robis Posted March 6, 2005 Author Report Share Posted March 6, 2005 Kas uz leju būs no cipara 1, vai uz augšu no 16? Tur viss ir kārtībā! Tādos gadījumos kverijam arī neko nevajag atgriezt :) Link to comment Share on other sites More sharing options...
Roze Posted March 7, 2005 Report Share Posted March 7, 2005 Nu var mēģināt manuprāt arī kaut kā šādi (atradīs kaut ko vienmēr): Pieņemsim ka jāatrod tuvākais '5': SELECT cipars FROM tabula ORDER BY ABS(cipars - 5) ASC LIMIT 1; Attiecīgi ja ieliksi LIMIT 2 tad atradīs divus tuvākos ciparus (protams var sanākt ka divi tuvākie uz vienu pusi (t.i. vai nu abi lielāki vai mazāki)). Link to comment Share on other sites More sharing options...
Recommended Posts