localhero Posted January 23, 2008 Report 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
andrisp Posted January 23, 2008 Report 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
Vebers Posted January 23, 2008 Report 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
Aleksejs Posted January 23, 2008 Report 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)
andrisp Posted January 23, 2008 Report Posted January 23, 2008 Vebers, ja es pareizi sapratu topika autoru, tad tev ORDER BY lauks nepareizs.
Gints Plivna Posted January 23, 2008 Report 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?
localhero Posted January 23, 2008 Author Report 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
Gints Plivna Posted January 23, 2008 Report 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) :)
Delfins Posted January 23, 2008 Report 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
Vebers Posted January 23, 2008 Report 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
Aleksejs Posted January 23, 2008 Report Posted January 23, 2008 A man liekās, ka mans strādās (jo tur ir subselect :P)
andrisp Posted January 23, 2008 Report Posted January 23, 2008 Es pieņēmu, ka autoram vajadzēs tikai par vienu kvīti datus (tipa vēl WHERE id = klāt)
Gints Plivna Posted January 23, 2008 Report 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
localhero Posted January 23, 2008 Author Report Posted January 23, 2008 Vebers tādā gadījumā atgriezīs 1 ierakstu bet man vajag visus.
Recommended Posts