localhero Posted January 21, 2008 Report Share Posted January 21, 2008 (edited) Ir tabula: ID kvits_id ------------- 1 100 2 101 3 102 4 100 5 100 Kā lai iegūst pirms pēdējo ierakstu kur kvits_id ir 100. Respektīvi ierakstu ar ID 4. Edited January 21, 2008 by localhero Link to comment Share on other sites More sharing options...
andrisp Posted January 21, 2008 Report Share Posted January 21, 2008 Man liekas, ka tu līdz galam neesi noformulējis domu, jo respektīvi tavam noformulējam atbilde ir šāda: WHERE kvits_id = 100 AND vertiba1 = v5 Link to comment Share on other sites More sharing options...
localhero Posted January 21, 2008 Author Report Share Posted January 21, 2008 (edited) Nu doma tāda ka ir 2 tabulas: kvitis un darbibas. kvitis - ierakstīta informācija par klientu, tel. num. apraksts utt darbibas - tiek veikti ieraksti par kvitim(pagarinatas, 2. reizi pagarinatas, 3. reizi pagarinats). respektīvi vienai kvītij var būt gan 2 darbības gan 20 un lai kļūdas gadījumā varētu UNDO pēdējo darbību ir vajadzigs noskaidrot kāds ir bijis iepriekšpēdējais stāvoklis. Bet šķiet kā jau tas bieži gadās tikko iepostē jautājumu atbilde atrodas uzreiz. $rezultats = mysql_query("SELECT id FROM kvitis WHERE kvits_id = '100'"); $pp_rinda = (mysql_num_rows($rezultats) - 2); $rezultats = ( SELECT * FROM 'darbibas' WHERE kvits_id = '100' LIMIT '$pp_rinda', 1); Edited January 21, 2008 by localhero Link to comment Share on other sites More sharing options...
GedroX Posted January 21, 2008 Report Share Posted January 21, 2008 Vienkāršāk: SELECT * FROM darbibas WHERE kvits_id = 100 ORDER BY ID DESC LIMIT 1 OFFSET 1 Link to comment Share on other sites More sharing options...
localhero Posted January 21, 2008 Author Report Share Posted January 21, 2008 Paldies GedroX kā naglai uz galvas. Es zināju ka kaut kam tādam ir jābūt bet laikam nespēju pareizi googlee noformulēt savas vajadzības. Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 21, 2008 Report Share Posted January 21, 2008 Nu doma tāda ka ir 2 tabulas: kvitis un darbibas. kvitis - ierakstīta informācija par klientu, tel. num. apraksts utt darbibas - tiek veikti ieraksti par kvitim(pagarinatas, 2. reizi pagarinatas, 3. reizi pagarinats). respektīvi vienai kvītij var būt gan 2 darbības gan 20 un lai kļūdas gadījumā varētu UNDO pēdējo darbību ir vajadzigs noskaidrot kāds ir bijis iepriekšpēdējais stāvoklis. Bet šķiet kā jau tas bieži gadās tikko iepostē jautājumu atbilde atrodas uzreiz. $rezultats = mysql_query("SELECT id FROM kvitis WHERE kvits_id = '100'"); $pp_rinda = (mysql_num_rows($rezultats) - 2); $rezultats = ( SELECT * FROM 'darbibas' WHERE kvits_id = '100' LIMIT '$pp_rinda', 1); Skatoties uz šitādiem SQLiem kur nav nekādu ORDER BY klauzu man tomēr rodas jautājums - vai kāds zin, ka kaut kur MYSQL dokos (vai kaut kur citur) ir rakstīts, ka bez ORDER BY rezultāts vienmēr būs vienā noteiktā sakārtojumā? Fiksi pameklējot googlē neko tādu neizdevās atrast... Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
marcis Posted January 21, 2008 Report Share Posted January 21, 2008 Skatoties uz šitādiem SQLiem kur nav nekādu ORDER BY klauzu man tomēr rodas jautājums - vai kāds zin, ka kaut kur MYSQL dokos (vai kaut kur citur) ir rakstīts, ka bez ORDER BY rezultāts vienmēr būs vienā noteiktā sakārtojumā? Nav ne rakstīts, ne apgalvots un pavisam noteikti tas tā nav! Link to comment Share on other sites More sharing options...
GedroX Posted January 21, 2008 Report Share Posted January 21, 2008 Vismaz postgresql, ja nekļūdos, sakārto pēc pēdējo izmaiņu laika. Link to comment Share on other sites More sharing options...
Delfins Posted January 21, 2008 Report Share Posted January 21, 2008 man gan domāts atgriezīs tā kā ir ierakstīts fiziski... Bet vismaz M$SQL ir tāda fīča `clustered index`, tas ir tad, kad ieraksts fiziski tiek ierakstīts starpā - tobiš dati jau tiek fiziski glabāti sasortēti pēc tāda indeksa. Link to comment Share on other sites More sharing options...
Kavacky Posted January 21, 2008 Report Share Posted January 21, 2008 (edited) Žēl, ka neievieš normāli to fīču, kas nesortētos atgrieztu random secībā. Edited January 21, 2008 by Kavacky Link to comment Share on other sites More sharing options...
GedroX Posted January 21, 2008 Report Share Posted January 21, 2008 Kavacky -> ar ko tev nepatīk ORDER BY RAND()? Link to comment Share on other sites More sharing options...
Aleksejs Posted January 21, 2008 Report Share Posted January 21, 2008 GedroX - ir aizdomas (nepamatotas © Buls), ka Kavacky to domāja ironiski - lai vienreiz izbeigtos šīs lietas - cerēt atlasīt kaut kādā noteiktā secībā no tabulas datus, bez ORDER BY izmantošanas. Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 21, 2008 Report Share Posted January 21, 2008 Žēl, ka neievieš normāli to fīču, kas nesortētos atgrieztu random secībā. Khekhe jādomā, ka tad puse forumu un visu citu MySQL aplikāciju sāktu darboties visnotaļ neprognozējami :) Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
Delfins Posted January 21, 2008 Report Share Posted January 21, 2008 tiek veikti ieraksti par kvitim(pagarinatas, 2. reizi pagarinatas, 3. reizi pagarinats). respektīvi vienai kvītij var būt gan 2 darbības gan 20 un lai kļūdas gadījumā varētu UNDO pēdējo darbību ir vajadzigs noskaidrot kāds ir bijis iepriekšpēdējais stāvoklis. Sūdīgs arhitekts tabulai... uztaisa papildus lauku $version ... un ar -1 dabū konkrētu rindu, nevis sortē un paņem offsetu. Cits stāsts, ja $version maina cilvēks, teiksim no 1.0 uz 1.75... (versionēšanas sistēmas), bet šeit tu vari zibraukt cauri ar +/- 1 sistēmu. Otrs variants - glabāt vecās versijas citā tabulā un aktuālās īstajā tabulā. Tad paņem vēcako kvīti `pārsviež` uz īsto - vot tev i UNDO operācija... Arī turmpāk selektēties ērtāk - tikai pa īstām kvītīm :) Tas pat būtu pareizāk! Link to comment Share on other sites More sharing options...
localhero Posted January 21, 2008 Author Report Share Posted January 21, 2008 Delfins nesapratu tavu $version domu. Bet runajot par otro variantu ta ari tiek darits. Ir tabula kvits kur glabajas nemainigie dati par kviti(Kvits id, klienta vards uzvards, telefona nummurs, apraksts utt) un ir tabula darbibas kur izmainju gadijuma tiek ievietoti jaunie datumi, summas utt. Vai ir iespejams vel optimalak ? Link to comment Share on other sites More sharing options...
Recommended Posts