Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: SQL OUTER JOIN Problem
AUTOR BEITRAG
Whiteknight KKK

RANG Ruler

#1 - 31.10 10:29

Hi Leute, folgendes Problem (vereinfacht dargestellt).


Tabelle "threads":
thread_id (INT)
last_post_date (DATETIME)


Tabelle "thread_read"
thread_id (INT)
read_date (DATETIME)
user_id (INT)


Ich möchte herausfinden, ob es Threads gibt die noch ungelesen sind. Wenn der User den Thread gelesen hat, gibt es einen Eintrag in der thread_read Tabelle. Wenn dort kein Eintrag ist, hat der User den Thread noch nicht gelesen. Um nur die neuen Threads zu ermitteln muss "last_post_date" > "read_date" sein.

Wie bekomme ich das mit SQL hin?

Mein Versuch:

SELECT
COUNT(a.thread_id)
FROM threads a LEFT JOIN thread_read b
ON a.thread_id = b.thread_id AND
a.last_post_date > b.read_date
WHERE b.user_id = 1

Der Versuch ist leider falsch. Das mit dem last_post_date > read_date funktioniert nicht, da ja auch kein Eintrag für read_date in der Tabelle "thread_read" sein kann.

Kann mir jemand helfen?
thies

RANG Deckschrubber

#2 - 31.10 10:48

nun du musst ja nicht jeden thread für jeden user in der tabelle thread_read aufnehmen, dann sollte der wert immer mit korrekten daten gefüllt sein und nie leer sein.

ansosten kannst du ja auch die bedingung b.read_date != null (o.ä.) hinzufügen.
Whiteknight KKK

RANG Ruler

#3 - 31.10 10:54

ich glaub ich habs:

SELECT
a.thread_id
FROM threads a LEFT JOIN thread_read b
ON a.thread_id = b.thread_id
AND b.user_id = 1
WHERE
(last_post_date > read_date OR read_date IS NULL)