Abfrage für Benutzerberechtigungen in Programm

Romed

Neuer Benutzer
Beiträge
3
Hallo Forum

Ich habe ein kleine Problem mit einer Abfrage für Benutzerberechtigungen.


Ich rufe meine Benutzerberechtigungen über folgende Abfrage ab:


Code:
SELECT FormularName, SteuerelementName,  Enabled, Visible
FROM   Tabelle
WHERE  BenutzergruppenID IN (SELECT BenutzergruppenID FROM Benutzergruppentabelle WHERE (Mitarbeiter_GUID =MItarbeiterID)) AND (FormularName = Formularname)
ORDER BY SteuerelementName

Hierbei kann ein Mitarbeiter in mehrerer Benutzergruppen sein.
Jetzt habe ich das Problem dass wenn ein Steuerelement in einer der Benutzergruppen nicht gesehen werden darf und in den anderen schon, dass der Datensatz eben 2,3,4,5 fach drinnen steht, je nachdem in wieviel benutzergruppen dieser MA ist.

Ich brauch aber nur den wert wenn der am höchsten ist von der jeweiligen Spalte.

z.b.

FORMULAR|ENABLED|VISIBLE|STEUERELEMENT
TEST|0|0|TESTELEMENT
TEST|1|0|TESTELEMENT
TEST|0|1|TESTELEMENT

Dann sollte es so kommen
FORMULAR|ENABLED|VISIBLE|STEUERELEMENT
TEST|1|1|TESTELEMENT

Wie kann ich diese Abfrage so umbauen dass es nach der 2ten Tabelle funktioniert?

LG
 
Werbung:
Ungetestet:
Code:
SELECT FormularName, SteuerelementName,  MAX(Enabled), MAX(Visible)
FROM   Tabelle
WHERE  BenutzergruppenID IN (SELECT BenutzergruppenID FROM Benutzergruppentabelle WHERE (Mitarbeiter_GUID =MItarbeiterID)) AND (FormularName = Formularname)
GROUP BY FormularName, SteuerelementName
ORDER BY SteuerelementName
 
Ich brauch aber nur den wert wenn der am höchsten ist von der jeweiligen Spalte.

z.b.

FORMULAR|ENABLED|VISIBLE|STEUERELEMENT
TEST|0|0|TESTELEMENT
TEST|1|0|TESTELEMENT
TEST|0|1|TESTELEMENT

Dann sollte es so kommen
FORMULAR|ENABLED|VISIBLE|STEUERELEMENT
TEST|1|1|TESTELEMENT

Wie kann ich diese Abfrage so umbauen dass es nach der 2ten Tabelle funktioniert?

LG

Mal als Beispiel in PG.

Code:
test=*# \d romed
  Table "public.romed"
  Column  |  Type  | Modifiers
----------+---------+-----------
 formular | text  |
 enabled  | boolean |
 visible  | boolean |

test=*# select * from romed ;
 formular | enabled | visible
----------+---------+---------
 test  | f  | f
 test  | t  | f
 test  | t  | t
(3 rows)

test=*# select formular, max(enabled::int), max(visible::int) from romed group by formular;
 formular | max | max
----------+-----+-----
 test  |  1 |  1
(1 row)

Ich muß die BOOL-Werte hier auf INT casten, aber das ist nur ein Detail.
 
Werbung:
Zurück
Oben