Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Abfrage für Benutzerberechtigungen in Programm

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Romed, 27 Juli 2014.

  1. Romed

    Romed Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Max()?
     
  3. Romed

    Romed Neuer Benutzer

    Hallo akretschmer

    Leider ist es nicht so einfach.
    Max() hab i bereits probeirt jedoch kein Erfolg

    LG
     
  4. Hubertus

    Hubertus Fleissiger Benutzer

    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
     
  5. akretschmer

    akretschmer Datenbank-Guru

    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.
     
    Romed gefällt das.
  6. Romed

    Romed Neuer Benutzer

    Vielen Dank an alle die mir geholfen haben. Funktioniert perfekt.

    LG
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden