eintrag, der nicht in beiden Tabellen auftaucht finden /MySQL
Michael S.
- datenbank
0 Ilja0 Michael S.0 Ilja0 Sven Rautenberg0 Michael S.0 Sven Rautenberg0 Ilja
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
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
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...
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:
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
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
Und das OUTER?
LEFT JOIN / RIGHT JOIN = OUTER JOIN
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
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