
Oracle SQL - kde je chybka v dotaze
Čau.
Prosím Warm_Spidera nebo někoho podobného o pomoc s podmínkou.
Mám poměrně jednoduché SQL:
SELECT * FROM opravneni left join uzivatele
on opravneni.uzivatel_id = uzivatele.id
order by uzivatel_id, aplikace
Výše uvedené SQL propojuje 2 tabulky.A výstupem jsou taková oprávnění, která má uživatel přiřazena.
No ale pozor, nejedná se o všechna možná oprávnění.
A já chci dotaz, který zobrazí i ta práva, která uživatel nemá (třetí tab. prava).
Na to mám tenhle dotaz:
SELECT uzivatele.id user_id, prava.create_date , uzivatele.disabled blokovan ,uzivatele.username, uzivatele.full_name, prava.popis mujpopisek, prava.aplikace , case when not opravneni.Uzivatel_id is null then '1' else '0' end maopravneni, TO_CHAR(CURRENT_DATE, 'DD-MON-YYYY HH:MI') Vypis_stavu_k
FROM prava
join uzivatele on 1=1
left outer join opravneni ON uzivatele.id = opravneni.Uzivatel_id and opravneni.pravo_id = prava.id order by uzivatele.id , prava.aplikace, maopravneni, popis
Ale tento zápis má dvě podstatné vady:1) oprávnění jsou v čase přidávána a měněna.
Tzn. vytáhnout chci jen to, co přibylo naposledy (v tab. oprávnění, sloupec Create_date)
2) Je tam nějaká drobná chyba
Vlivem této chyby se u jediného oprávnění rozchází výsledek se skutečností.
Konkrétně jde o právo, které nemá uživatel přiřazeno(není v tabulce opravneni), ale
ve výsledku je vedeno jako, že ho má

Čím to ještě může být?