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







Odpovedet emailem