
Oracle SQL - tak trochu patálie
Ahoj,
měl bych jednu potíž k rozlousknutí a tato poradna mě zatím nezklamala.
Primárně jde o Oracle SQL. Můj popis vypadá delší, ale nechci opomenout žádný detail nutný k rozlousknutí rébusu.
Řekněmě, že mám tyhle údaje o právech konkrétního uživatele v aplikaci (MGEO):
A k tomu by se měly vztahovat tyhle tabulky, které mezi sebou mají vazby:
No a já jsem mezi těma tabulkama udělal tenhle SQL (Oracle) dotaz:
SELECT *
FROM uzivatele uza
LEFT JOIN opravneni op
ON uza.id = op.uzivatel_ID
left JOIN Prava pr
ON op.aplikace = pr.aplikace
left JOIN prava_role
ON pr.id = prava_role.pravo_id
ORDER BY uzivatel_ID, ROLE_ID
Výsledek tohoto dotazu přikládám ZDE.Jedná se o aplikaci MGEO (ostatní řádky pro jiné aplikace je možno ignorovat).
Problémy mám tedy dva:
- Jak vytvořit dotaz, jehož výsledek odpovidá první tabulce (jen pro MGEO)?
- Jak vytvořit dotaz, který bude zobrazovat pouze nejaktuálnější stav? -
Poněvadž tabulka obsahuje i historii, ale mě zajímá jen nejaktuálnější záznam.
Zkoušel jsem do dotazu doplnit něco jako:
WHERE create_date = max (create_date)
ale za to mě zhouká:
Group function is not allowed here...
V úvahu připadá i varianta, že jsem netrefil správně vazby.
Nemohu se totiž vyznat v první uváděné tabulce aplikace a výstupu skriptu.
Dokumentaci bohužel nemám.
Díky!