Petr Gola wrote:
> Potreboval bych bud dokopat Hibernate k tomu aby to ten prikaz
> prevedlo na:
>
> select
>   osoba1.id <http://osoba1.id> as OSOBA_ID,
>   osoba1.pes_id as PES_ID,
>   pes1.jmeno AS PES_JMENO
> from
>   tabulka_osoba osoba1,
>   tabulka_pes pes1
> where
>   osoba1.PES_ID = pes1.id <http://pes1.id>
>
> union
>
> select
>   osoba1.id <http://osoba1.id> as OSOBA_ID,
>   osoba1.pes_id as PES_ID,
>   null as PES_JMENO
> from
>   tabulka_osoba osoba1,
> where osoba1.PES_ID IS NULL
>
> order by PES_JMENO
>
Pro čisté sql je lepší použít LEFT JOIN místo UNION.


select
  osoba1.id <http://osoba1.id> as OSOBA_ID,
  osoba1.pes_id as PES_ID,
  pes1.jmeno as PES_JMENO
from
  tabulka_osoba osoba1
LEFT JOIN tabulka_pes pes1 ON pes1.id=osoba1.pes_id
order by pes1.nazev


LEFT JOIN způsobí to, že se zobrazí i ty osoby, u kterých pes vůbec
neexistuje (je NULL).

Nastává zde ovšem problém s tím, zda se NULL řádky zobrazí první a nebo
poslední - viz. jak psal S. Ošmera.

Jinak tuším, že hibernate má také LEFT JOIN (ale nejsem si jistý).

Fafi

Odpovedet emailem