localhero Posted January 23, 2008 Report Share Posted January 23, 2008 (edited) Ir divas tabulas kvitis un darbibas. tabula kvitis. id nosaukums ---------------- 1 nos1 2 nos2 3 nos3 tabula darbibas id kvits_id darbiba 1 1 pag. 2 1 sav. 3 3 pag. 4 1 atgr. 5 3 sav. Ka lai dabu ierakstus par kvitim no pirmas tabulas un otras tabulas kur otras tabulas ieraksta pedeja darbiba = pag. Man ir risinajums bet viņš man nepatik. Varbut ir kads gudraks risinajums. EDITED Edited January 23, 2008 by localhero Link to comment Share on other sites More sharing options...
andrisp Posted January 23, 2008 Report Share Posted January 23, 2008 (edited) Iespējams, ka risinājums tāds pats kā tu esi izdomājis, bet vienkāršāku nezinu: SELECT k.*, b.* FROM kvitis k LEFT JOIN darbibas b ON ( k.id = b.kvits_id ) ORDER BY b.id DESC LIMIT 1 Edited January 23, 2008 by andrisp Link to comment Share on other sites More sharing options...
Vebers Posted January 23, 2008 Report Share Posted January 23, 2008 (edited) select k.nosaukums, d.darbiba from kvitis k left join darbibas d on k.id = d.kvits_id ORDER BY d.id desc LIMIT 0, 1 edit: andrisp, pasteidzās pirmais :) Edited January 23, 2008 by Vebers Link to comment Share on other sites More sharing options...
Aleksejs Posted January 23, 2008 Report Share Posted January 23, 2008 Ja vari garantēt, ka darbibas.id vienmēr būs lielāka vērtība jaunākai kvītij, tad: SELECT k.id, k.nosaukums, d.id, d.kvits_id, d.darbiba FROM kvitis AS k LEFT JOIN darbibas AS d ON k.id = d.kvits_id WHERE d.id IN (SELECT max(d2.id) FROM darbibas AS d2 WHERE d2.kvits_id = k.id) Link to comment Share on other sites More sharing options...
andrisp Posted January 23, 2008 Report Share Posted January 23, 2008 Vebers, ja es pareizi sapratu topika autoru, tad tev ORDER BY lauks nepareizs. Link to comment Share on other sites More sharing options...
Vebers Posted January 23, 2008 Report Share Posted January 23, 2008 Tu pareizi sapratu, es pārpratu... Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 23, 2008 Report Share Posted January 23, 2008 Ka lai dabu ierakstu par kviti no pirmas tabulas un pedejo ierakstu par to pašu kviti no otras tabulas. Man ir risinajums bet viņš man nepatik. Varbut ir kads gudraks risinajums. BTW jautājums - vienam konkrētam ierakstam kvīšu tabulā vai visiem? Link to comment Share on other sites More sharing options...
localhero Posted January 23, 2008 Author Report Share Posted January 23, 2008 (edited) Gints visiem ierakstiem. tobiš izmet tos kvits.id kuriem tabulā darbības pēdējais ieraksts ir pag. Es laikam neskaidri uzrakstiju gruti noformulet sori. Edited January 23, 2008 by localhero Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 23, 2008 Report Share Posted January 23, 2008 Es laikam neskaidri uzrakstiju gruti noformulet. Grūti noformulēt ko - to vai tev šo rezultātu vajag vienam konkrētam zināmam ierakstam (pēc kvīts id piemēram) vai arī vairākiem pēc kārtas (nu varbūt kaut kādi kritēriji ir protams) :) Link to comment Share on other sites More sharing options...
Delfins Posted January 23, 2008 Report Share Posted January 23, 2008 (edited) Vispār neviens jūsu varinats nestrādās (izņemot ar SUBSELECT), jo Ka lai dabu ierakstus par kvitim nekādi LIMIT nelīdzēs.. atgriezīs tikai vienu kvīti Ja grib visu selektēt optimizēti, tad kvīšu darbībām jāliek papildus lauks... "pēdējais"... atjaunot to pie inserta TRIGER_BEFORE_INSERT START UPDATE KVITS_DARBIBAS SETTING IS_LAST = 0 WHERE kvits_id = current_record.kvits_id AND darbibas_tips = current_record.darbibas_tips END Vēlāk vienkārši smuks selekts ;) Edited January 23, 2008 by Delfins Link to comment Share on other sites More sharing options...
Vebers Posted January 23, 2008 Report Share Posted January 23, 2008 Varēji jau pirmo postu needitēt, bet vnk jaunu komentāru ierakstīt... select k.nosaukums, d.darbiba from kvitis k left join darbibas d on k.id = d.kvits_id where d.darbiba='pag.' ORDER BY d.id desc LIMIT 0, 1 Link to comment Share on other sites More sharing options...
Aleksejs Posted January 23, 2008 Report Share Posted January 23, 2008 A man liekās, ka mans strādās (jo tur ir subselect :P) Link to comment Share on other sites More sharing options...
andrisp Posted January 23, 2008 Report Share Posted January 23, 2008 Es pieņēmu, ka autoram vajadzēs tikai par vienu kvīti datus (tipa vēl WHERE id = klāt) Link to comment Share on other sites More sharing options...
Gints Plivna Posted January 23, 2008 Report Share Posted January 23, 2008 Vispār neviens jūsu varinats nestrādās (izņemot ar SUBSELECT), jo nekādi LIMIT nelīdzēs.. atgriezīs tikai vienu kvīti nu re te jau paceļās jautājums vai vajag par vienu ierakstu vai vāirākiem. Un parādās arī MySQLa trūkumi - nav analītisko f-ju piemēram row_number() :) Būtu analītiskās f-jas varētu vismaz source tabulas skanēt tikai 1 reizi. Gints Plivna http://datubazes.wordpress.com Link to comment Share on other sites More sharing options...
localhero Posted January 23, 2008 Author Report Share Posted January 23, 2008 Vebers tādā gadījumā atgriezīs 1 ierakstu bet man vajag visus. Link to comment Share on other sites More sharing options...
Recommended Posts