Berechtigungsabfrage wie gestalten?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Berechtigungsabfrage wie gestalten?

    Guten Morgen zusammen,

    irgendwie werde ich aus dem Manual nicht schlau, deswegen poste ich hier.
    Und zwar habe ich in MySQL 3 Tabellen. Eine Tabelle "Benutzer"(Login, Name, Vorname, PW), eine "Berechtigungen" (BerechtigungsID, Login, DateiID) und "Dateien" (DateiID, Name, Pfad).
    Nach einem Login möchte ich alle Dateien auf einer Seite als Downloadlink anzeigen lassen, auf die der Benutzer Zugriff hat. Wie stelle ich das mit einer SQL Abfrage an? Ich bekomme da einfach nichts gescheites hin.

    Gruß
    TiMsEn

  • #2
    Code:
    select d.name,pfad 
    from dateien d, berechtigungen b, benutzer u
    where u.login=b.login and b.dateiid=d.dateiid
    sollte klappen, wenn das feld login in der tabelle benutzer dem feld login der tabelle berechtigungen entspricht
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      das entspricht es, aber was meinst du mit d dateien d.name usw?
      Zuletzt geändert von timsen; 28.03.2003, 09:22.

      Kommentar


      • #4
        diese Buchstaben d.... u... das sind Aliasnamen die in der From Klausel definiert werden.

        Kommentar


        • #5
          damit es bei der Abfrage zu keinen fehlern kommt, wenn in 2 tabellen die gleiche Spalte existiert, macht man folgendes:

          tabelle.spalte

          "Name" kommt bei dir ja, in 2 Tabellen vor!

          gruss

          Kommentar


          • #6
            ich brauche alle drei tabellen, da es aber in zwei tabellen die spalte name gibt, wäre select name,pfad nicht eindeutig, ich muss daher select dateien.name verwenden, damit sql weiß, aus welcher tabelle es die spalte name lesen soll.

            da ich jeden tabellennamen inmal im from-teil schreiben muss und im where-teil müsste ich zweimal die ellenlangen tabellennamen tippen, das erspare ich mir, indem ich schreibe: from dateien d
            jetzt kann ich überall wo ich die tabelle dateien brauche einfach d statt dateien schreiben
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Ich habs so versucht und ich bekomme folgende Fehlermeldung: "Table 'personal.dateien' doesn't exist"

              Kommentar


              • #8
                gibt's die tabelle personal denn?
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  sorry hab auch groß und kleinschreibung nicht geachtet, danke die abfrage funktioniert.

                  Kommentar


                  • #10
                    diese abfrage sollte sogar etwas schneller gehen. gerade wenn du viele viele sachen in der DB abgelegt hast.

                    Code:
                    SELECT  d.name,
                            pfad 
                      
                      FROM  benutzer U
                              LEFT OUTER JOIN berechtigungen B USING(login)
                                LEFT OUTER JOIN dateien D USING(dateiid)
                    bei happy variante wird erst ein produkt aller daten erstellt und dann erst gefiltert verbunden.
                    bei dieser variante hier, passiert dies nicht. ich hoffe doch mal, dass ich den zusammenhang deiner tabellen korrekt interpretiert hat. wenn ja, geht die abfrage. wenn nein, wirds wohl einen fehler geben..
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar

                    Lädt...
                    X