kompliziertere JOIN abfrage

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

  • kompliziertere JOIN abfrage

    Hallo.

    Ich habe folgende Tabellenstruktur:

    Tab1: enthält Kundendaten. Key ist eine ID.
    Tab2: enthält Angestelltendaten. Key ist auch eine ID.

    Jedem Angestellten werden nur bestimmte Kunden zugeordnet.
    Dies geschieht über Tab3, die nur die Spalten KundenID_fk und AngestelltenID_fk besitzt (Die Keys von Tab1 & 2).
    Beispielhafte Darstellung:

    KundenID_fk | AngestelltenID_fk
    1 | 20
    1 | 30
    2 | 30
    1 | 40
    2 | 40
    3 | 40

    Der Angestellte mit der ID 20 darf also nur Kunden 1 sehen usw..

    Ich hab es geschafft eine JOIN Abfrage zu erstellen, die mir anzeigt, welche Kunden einem bestimmten Angestellten zugeordnet sind.
    Jetzt verzweifle ich aber am Gegenteil:
    Ich brauche eine Abfrage die mir nur die Kunden anzeigt, die einem bestimmten Angestellten NICHT zugeordnet sind.
    Meine Theorie sah wie folgt aus, doch das stellte sich als falsch heraus:

    SELECT t1.vorname, t1.nachname, t1.kundenid
    FROM Tab1 AS t1, Tab3 AS t2
    ON t1.kundenid != t2.kundenid_fk
    WHERE t2.angestelltenid_fk = '$variable_mit_angestelltenid'

    Ich hoffe, mir kann jemand helfen. Ach ja - ein Link auf die zugegebenermaßen gute Erläuterung von JOINS hier im Forum hilft mir nicht, denn diese und andere Hilfen habe ich mehrmals studiert ohne ein Lösung für mein Problem zu finden! Ich bin mit meinem Latein am Ende, denn die Abfrage ist aufgrund der Struktur von Tab3 nicht so leicht wie sie zu Anfang scheint.

    mfg,
    Daniel
    Zuletzt geändert von daniel79; 05.05.2005, 10:34.

  • #2
    Re: kompliziertere JOIN abfrage

    Ach ja - ein Link auf die zugegebenermaßen gute Erläuterung von JOINS hier im Forum hilft mir nicht, denn diese und andere Hilfen habe ich mehrmals studiert ohne ein Lösung für mein Problem zu finden!
    darauf wollte ich dich grad verweisen ... dort steht, soweit ich mich erinner, die lösung doch drin, oder? (habe den link selbst nicht ^^).
    Ich brauche eine Abfrage die mir nur die Kunden anzeigt, die einem bestimmten Angestellten NICHT zugeordnet sind.
    wenn du in der relations-tabelle auf jeden angestellten jeden kunden left joinst (ON t1.kundenid = t2.kundenid_fk), dann den angestellten wählst (WHERE ...), den du willst, und dann noch schaust, was die kunden, die ihm nicht zugeordnet sind, von den zugeordneten unterscheidet (IS NULL), bist du am ziel. oder nicht?

    edit: mehr tips hinzugefügt.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Hallo.

      Ich danke dir auf jeden Fall schon mal für deine Hilfe, aber ich habe auch mit deinen Vorschlägen noch immer nicht das richtige Ergebnis erzielen können.

      Drückt man es in einem Satz aus, klingt es ganz simpel:

      Ich will ALLE Kunden aus Tab1 angezeigt kriegen AUSSER denen, die in Tab3 einem bestimmten Angestellten zugeordnet sind.

      Ich schaffe es jedoch nicht, dies in sql auszudrücken.
      Mir ist klar, dass Hilfe zur Selbsthilfe in einem Forum wie diesem notwendig ist, da es sonst zu einem "macht mir mal eben . . . " ausartet, aber ich fürchte in diesem Fall ist es notwendig, dass man mich noch ein bischen mehr in die richtige Richtung lotst.

      mfg,
      Daniel

      Kommentar


      • #4
        Code:
        SELECT k.name
        FROM kunden k
        LEFT JOIN kunde_angestellte_relation ka
        ON k.id = ka.id_kunde AND ka.id_angestellter = 1
        WHERE ka.id IS NULL
        sorry, meine aussage vorhin war so nicht vollständig korrekt (siehst ja). geht das jetzt?

        bei schwierigen queries hilft mir immer schrittweises rantasten ... man sieht dann, wie sich das ergebnis verändert. es gibt auch leute, die das im kopf können . ich nicht.

        poste bitte nächstes mal (oder falls das nicht geht) einen test-dump ... dann geht das viel besser.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          @ derHund:

          Ich wollte mich nur nochmal bei dir bedanken.
          Dein query funktioniert wie gewünscht und das beste ist: ich habe ihn nicht nur einfach abgeschrieben, nein! Ich hab ihn zwischenzeitlich sogar verstanden! Das nächste Problem dieser Art kann ich selbst lösen.
          ^^

          mfg,
          Daniel

          Kommentar

          Lädt...
          X