finde den Fehler in der Abfrage nicht

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

  • finde den Fehler in der Abfrage nicht

    Hi,

    ich habe drei Tabellen, die wie folgt aufgebaut sind.

    Vereinfachtes Beispiel:

    Adminuser
    ID | Name

    Adminlookup
    UserID | StatusID

    Adminrechte
    ID | Status



    In der Tabelle Adminuser sind also alle Admins enthalten. Nachdem nicht jeder Admin die gleichen Rechte zur Verfügung haben soll, habe ich eine Tabelle (Adminrechte) mit allen Rechten angelegt.

    Die Zuweisung der Rechte wird allein durch die Adminlookup Tabelle erreicht. Bei der Spalte UserID kommt die ID von dem jeweiligen Adminuser rein und die StatusID verknüpft diesen dann mit dem jeweiligen Adminrecht.

    In einer Abfrage möchte ich die Rechte eines bestimmten Adminuser herausfinden. Aus irgendeinem Grund funktioniert meine Abfrage nicht richtig. Er listet mir die Rechte zwar auf, verschluckt dabei aber immer den ersten Wert.


    Kleines Beispiel:

    Adminuser
    ID=1 | Name=”Alex”

    Adminlookup
    UserID=1 | StatusID=1
    UserID=1 | StatusID=2
    UserID=1 | StatusID=3

    Adminrechte
    ID=1 | Status=“Mitarbeiter anlegen“
    ID=2 | Status=“Kontakte verwalten“
    ID=3 | Stauts=“Passwörter verwalten“


    Normalerweise hätte jetzt der Adminuser Alex alle drei Adminrechte zur Verfügung.
    Bei meiner Abfrage lässt er aber das erste Adminrecht einfach weg.

    Hier die Abfrage:
    PHP-Code:
    $ergebnis=mysql_query("SELECT * FROM Adminuser, Adminlookup, Adminrechte WHERE Adminuser.ID=$ID AND Adminlookup.UserID=$ID AND Adminlookup.StatusID=Adminrechte.ID") or die (mysql_error()); 
    ich hoffe, dass ich mich einigermaßen verständlich ausgedrückt habe.

    Danke für die Hilfe

    hemfrie

  • #2
    benenn mal spasseshalber in adminrechte die spalte "id" >> "aid" um.
    du überschreibst da wahrscheinich die id, weil sie 2x vorkommt.

    gruss wurzel
    Kissolino.com

    Kommentar


    • #3
      das erste Recht wird leider immer noch verschluckt.


      hemfrie

      Kommentar


      • #4
        hmm *stocher im nebel*

        versuchs mal damit
        PHP-Code:
        $ergebnis=mysql_query("SELECT * FROM Adminuser, Adminlookup, Adminrechte WHERE Adminuser.ID='$ID' AND Adminlookup.UserID='$ID' AND Adminlookup.StatusID=Adminrechte.ID") or die (mysql_error()); 
        ansonsten würd ich die Abfrage mal abspecken auf 2 Tabellen und
        mich rantasten.

        andere möglichkeit: left/right join, aber da musst du mal im forum nach
        suchen, da bin ich nicht so fit drin.

        gruss wurzel
        Kissolino.com

        Kommentar


        • #5
          leider auch nicht.

          Da werde ich um das rantasten wohl nicht herumkommen.

          Danke für die Hilfe.


          hemfrie

          Kommentar


          • #6
            benenne mal deine spaltennamen um, dann kann man bei JOIN auch USING verwenden...

            Adminuser
            UserId | Name

            Adminlookup
            UserId | AccessId

            Adminrechte
            AccessId | Status

            und hier die passende query ...

            Code:
            SELECT    *
            FROM      Adminuser AU
                        LEFT OUTER JOIN Adminlookup AL USING(UserId)
                          LEFT OUTER JOIN Adminrechte AR USING(AccessId)
            WHERE     AU.UserId = '1'
            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


            • #7
              Hi Abraxax,

              kommt genau das gleiche raus, wie bei meiner Abfrage. Ich versteh das einfach nicht.

              obwohl in der Tabelle adminlookup 1 | 1 steht, will er mir nicht "Mitarbeiter anlegen" ausspucken.


              hemfrie

              Kommentar


              • #8
                normalerweise klappt das alles, wenn die daten korrekt sind

                sind die feldtypen in den jeweilig beiden tabellen identisch? z.b. INT(11)

                poste mal einen export des phpmyadmin.
                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


                • #9
                  hab die Tabellen nochmal geprüft aber nichts gefunden.

                  Vielleicht siehst Du ja den Fehler.



                  hemfrie
                  Angehängte Dateien

                  Kommentar


                  • #10
                    hi Abraxax,

                    es funktioniert jetzt doch mit Deiner Abfrage. Ich hatte noch einen kleinen Fehler in meiner Ausgabe.

                    Sorry, dass ich Dich solange damit aufgehalten habe.

                    vielen Dank!


                    hemfrie

                    Kommentar

                    Lädt...
                    X