Denormalizujte schema a mate po problemu. Lukas
Sent from Samsung Mobile -------- Original message -------- From: Rastislav Siekel <sie...@prosoft.sk> Date: To: Java <konference@java.cz> Subject: Re: Hibernate SELECT bez FROM tabuľky Vďaka za názor, ale príkaz SELECT xyz FROM master WHERE exists (SELECT 1 FROM detail WHERE detail.master_id = master.id AND detail.sloupce <> konec) vyberie všetky záznamy Master, pretože ku každému existuje nejaký detail, ktorý hovorí, že oprava nie je ukončená - prvý detail. Mňa zaujíma atribút ukončenie len na poslednom detaile. Rastislav "Bedo" Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : <sie...@prosoft.sk> Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 27. 6. 2013 18:44, Petr Franta wrote: Myslím si, že by to mělo jít vyřešit pomocí podmínky "exists" nebo "not exists": SELECT xyz FROM master WHERE exists (SELECT 1 FROM detail WHERE detail.master_id = master.id AND detail.sloupce <> konec) Nebo něco podobného. Petr 2013/6/27 Rastislav Siekel <sie...@prosoft.sk> Možno som to nenapísal úplne jasne - skúsim inak Mám záznamy o oprave - hlavičky, a ku každej môže byť 1 - N detailov (priebeh opravy, na poslednej je aj prípadne ukončenie). Vytváram SELECT pre zoznam opráv, ktoré ešte nemajú koniec, t.j. s podmienkou, či posledný detail ešte nemá zadaný koniec (tie predošlé ho určite nemajú zadaný, takže obyčajný JOIN by mi vybral všetky opravy, lebo ku každému master existuje určite aspoň jeden detail, ktorý vyhovuje podmienke). posledný detail zistím v SQL tak ako som uviedol nižšie. Rastislav "Bedo" Siekel P.S. >From detail d where d.master=:master order by d.order Tento príkaz vypíše pre 1 master všetky detaily, čo určite nie je to, čo hľadám. Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : <sie...@prosoft.sk> Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 27. 6. 2013 16:11, Martin Beránek wrote: Není moc jasné zadání, ale hql From detail d where d.master=:master order by d.order Podle mě dělá co požadujete Martin Dne 27.6.2013 15:36 "Rastislav Siekel" <sie...@prosoft.sk> napsal(a): Otočiť to na vyhľadávanie "detail JOIN master" by v tomto prípade nešlo. Výsledok má byť zoznam mastrov (filtrovaný na ďalšie podmienky) s tým, že sú zadané podmienky aj na posledný detail. Principiálne hľadám, či je možné v Hibernate spraviť SELECT * FROM( SELECT...) Rastislav "Bedo" Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : <sie...@prosoft.sk> Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 On 27. 6. 2013 15:11, ŠVARC Jiří wrote: Nevím jestli jsem dobře porozuměl, ale nešlo by to realizovat vyhledáním v seznamu detailů s kritériem odkazu na mastera, nastavením řazení a query.setMaxResults(1)? ing. Jiří Švarc Programmer Analyst Asseco Central Europe, a.s. Solutions for Demanding Business Budějovická 778/3a, 140 00 Praha 4 Czech Republic Mobile: +420 737 944 536 jiri.sv...@asseco-ce.com www.asseco-ce.com From: konference-boun...@java.cz [mailto:konference-boun...@java.cz] On Behalf Of Rastislav Siekel Sent: Thursday, June 27, 2013 2:57 PM To: Java Subject: Hibernate SELECT bez FROM tabuľky Zdravím vospolok, chcel by som sa spýtať, či niekto neriešil nasledujúci problém: V Oracle mám tabuľky master a detail. Mám master a chcem k nemu nájsť posledný detail, čo spravím v SQL takto: ... AND detail_id = ( SELECT * FROM ( SELECT detail_id FROM detail ORDER BY detail_time DESC ) WHERE rownum = 1 ) ... Tu som narazil na problém, že Hibernate pomocou Criteria API asi nevie spraviť "SELECT FROM (...) WHERE ...". Aj DetachedCriteria, aj Criteria si vyžadujú Entitu (DTO), nad ktorou pripravia SQL príkaz. Je nejaká možnosť ako toto obísť? Vďaka, Rastislav "Bedo" Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : <sie...@prosoft.sk> Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20