Michael S.: eintrag, der nicht in beiden Tabellen auftaucht finden /MySQL

Kann mir mal jemand kurz auf die Sprünge helfen? Ich versuch grad irgendwie eine SQL-Abfrage zu formulieren, die mir alle Einträge aus einer Tabelle liefert, die nicht in der zweiten Tabelle auftauchen. Sagen wir mal z.B. alle Nachrichten aus der Tabelle "nachrichten", deren ID nicht in der Tabelle "Zuweisungen" auftaucht.
Wäre für eine kleine Hilfestellung dankbar.

mfg
Micha

  1. yo,

    Kann mir mal jemand kurz auf die Sprünge helfen?

    du meinst dies sicherlich wörtlich oder ? ;-)

    Ich versuch grad irgendwie eine SQL-Abfrage zu formulieren, die mir alle Einträge aus einer Tabelle liefert, die nicht in der zweiten Tabelle auftauchen. Sagen wir mal z.B. alle Nachrichten aus der Tabelle "nachrichten", deren ID nicht in der Tabelle "Zuweisungen" auftaucht.

    die lösung habe ich gerade ein paar beiträge weiter unten beschriben, es handelt sich um einen OUTER JOIN der beiden tabellen mit einer IS NULL abfrage in der WHERE klausel.

    wenn du mehr als den ansatz haben willst, dann poste bitte grundsätzlich immer das dbms, die version und das tabellen-design, falls notwendig auch mit beispieldaten und gewünschte ergebnismenge

    Ilja

    1. wenn du mehr als den ansatz haben willst, dann poste bitte grundsätzlich immer das dbms, die version und das tabellen-design, falls notwendig auch mit beispieldaten und gewünschte ergebnismenge

      Ilja

      as I said: ich hab zwei Tabellen.
      Die erste enthält gespeicherte Nachrichten. Hat etwa die Spalten: NachrichtID, AbsenderID, Betreff, Nachricht, Datum etc.
      Die zweite Tabelle enthält dann Verweise. Sieht dann so aus:
      VerweisID, AbsenderID, EmpfaengerID, gelesen.

      Die Benutzer können über die Oberfläche "ihren" Verweis auf die Nachricht löschen, so dass die Nachricht bei ihnen nicht mehr Auftaucht, aber irgendwie muss das Script ja auch feststellen, wann niemand mehr nen Verweis auf die Nachricht mehr hat und die Nachricht aus der Datenbank löschen...

      1. yo,

        die version mit anzugeben, ist gerade bei mysql ist immer eine gute sache. je vollständiger du uns alle benötigten daten gibst, und zwar in einem post, desto besser kann dir geholfen werden. nochmal für das nächste mal:

        • dbms
        • version
        • betroffene daten-design (tabelle mit spalten)
        • beispieldaten
        • gewünschte ergebnismenge

        SELECT n.NachrichtID, n.AbsenderID, n.Betreff, n.Nachricht, n.Datum
        FROM nachrichten AS n
        LEFT JOIN verweise AS v ON (n.nachrichtID = hier_spalte_aus_tabelle_verweise_die_nachrichtid_enthält)
        WHERE v.verweisID IS NULL

        Ilja

        1. Moin!

          SELECT n.NachrichtID, n.AbsenderID, n.Betreff, n.Nachricht, n.Datum
          FROM nachrichten AS n
          LEFT JOIN verweise AS v ON (n.nachrichtID = hier_spalte_aus_tabelle_verweise_die_nachrichtid_enthält)

          Und das OUTER?

          WHERE v.verweisID IS NULL

          - Sven Rautenberg

          --
          "Love your nation - respect the others."
          1. Und das OUTER?

            LEFT JOIN / RIGHT JOIN = OUTER JOIN

            1. Moin!

              Und das OUTER?

              LEFT JOIN / RIGHT JOIN = OUTER JOIN

              Stimmt, sagt die Doku auch. Würde ich (persönliche Präferenz) trotzdem als Gedächtnisstütze nicht weglassen, auch wenn's optional ist. :)

              - Sven Rautenberg

              --
              "Love your nation - respect the others."
              1. yo,

                Würde ich (persönliche Präferenz) trotzdem als Gedächtnisstütze nicht weglassen, auch wenn's optional ist. :)

                ich bin sehr für gedächnisstützen und auch eine saubere schreibeweise bei sql. allerdings ist dies das erste mal, dass jemand bei einen LEFT JOIN damit keinen OUTER JOIN in verbindung bringt. irgendwie finde ich das schon ausreichend, weil die WORTE LEFT oder RIGHT doch irgendwie die OUTER JOIN technik schon stark implizieren.

                Ilja