Auflistung aller nicht zugewiesenen Einträge

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

  • Auflistung aller nicht zugewiesenen Einträge

    Hi, habe ich ein kleines Problem und wäre dankbar wenn mir jemand helfen könnte!!!


    Habe eine Tabelle mit Adressen. Nun dürfen bestimmte Benutzer aber nur einige Adressen aus dieser Tabelle einsehen! Das habe ich über eine zusätzliche Tabelle user_adressen, welche die Felder UserID und AdressenID besitzt, und über folgendes SQL-Statemant erreicht!

    PHP-Code:
    SELECT 
    FROM adressen 
    INNER JOIN user_adressen 
    ON adressen
    .id user_adressen.AdressenID 
    WHERE
    (user_adressen.userid =  1); 

    Das funktioniert auch wunderbar, aber nun zu meinem Problem.
    Ich möchte mir gerne per Abfrage alle Adressen ausgeben lassen, die ich Beispielsweiße Benutzer 1 noch nicht zugewiesen habe!!!


    Ich danke schon einmal im Vorfeld für jegliche Antworten!!
    Zuletzt geändert von McPunk; 23.02.2006, 00:45.

  • #2
    Also wenn du dir nur die nicht zugewiesenen adressen ausgeben lassen willst - und ich deine frage richtig verstanden habe - dann kannst du es doch so machen:
    Code:
     SELECT * FROM adressen WHERE adressen.id<'1'
    Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
    aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

    Kommentar


    • #3
      aber damit würden ja alle adressen angezeigt deren id kleiner 1 ist, oder nicht.

      ich möchte aber gerne, wenn ich benutzer 1 zum beispiel nur die adresse mit der id 5 zugewiesen habe, dass alle adressen angezeigt werden, nur halt die adresse mit id 5 nicht.


      also im grunde bräuchte ich eine abfrage, welche mir alle adressen aus der adressen tabelle anzeigt, für die kein eintrag in der user_adressen tabelle mit userid = 1 vorhanden ist!
      Zuletzt geändert von McPunk; 23.02.2006, 00:39.

      Kommentar


      • #4
        LEFT JOIN
        IS NULL

        sollte dir helfen. schau dich mal im forum um, es gibt AFAIK nen sticky, der das erklärt ... "JOINS ... das leidige Thema" oder so ähnlich heißt er.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          Danke schaue ich mir gleich an!!!

          Kommentar


          • #6
            Hi habe nun mir auf "derHund"s Tip folgende Anweisung zurecht gebastelt:
            PHP-Code:
            SELECT adressen.*
            FROM adressen 
            LEFT JOIN user_adressen 
            ON adressen
            .id user_adressen.AdressenID
            WHERE 
            ((user_adressen.UserID IS NULL) OR (user_adressen.UserID != 1)); 
            Funktioniert ganz gut. Nur ein kleinen Fehler hat es noch.


            Wenn ich in der user_adressen Tabelle folgende Verweise habe:
            Benutzer 1 darf Adresse 18 sehen
            Benutzer 2 darf Adresse 18 sehen

            dann wird auf grund des OR (user_adressen.UserID <> 1), auch Adresse 18 mit angezeigt und das möchte ich ja nicht, da ich ja nur die Adressen angezeigt bekommen möchte, bei denen kein Verweis zu Benutzer 1 vorhanden ist.

            Also irgendwas in die Richtung
            OR ((user_adressen.UserID <> 1)
            AND (user_adressen.UserID = 1 ist für die aktuelle AdressenID nicht vorhanden))


            Hätte jemand eine Idee wie man die zweite Bedingung beschreiben könnte?
            Zuletzt geändert von McPunk; 23.02.2006, 01:29.

            Kommentar


            • #7
              Lösung gefunden

              Es scheint als hätte ich die Lösung für mein Problem gefunden !

              Hier für die Leute die es interessiert:


              Code:
              SELECT A1.*
              FROM adressen A1
              WHERE  NOT EXISTS 
                       (SELECT *
                        FROM user_adressen
                        WHERE(
                             (user_adressen.AdressenID = A1.ID) 
                        AND 
                             (user_adressen.UserID = 1)));

              Kommentar

              Lädt...
              X