SQL-Statement mit JOIN!?

Leomuck

Mitglied
Hallo allerseits,

ich habe mal wieder das Problem, dass ich ein komplexes SQL-Statement benötige, welches meines Erachtens nach mit JOIN realisierbar ist (da bin ich mir eben nicht sicher, weil ich JOIN nicht wirklich kenne).

Folgendes Statement möchte ich erstellen:

Tabelle 1: forum_visits -> thread, user, last_visit
Tabelle 2: forum_posts -> thread, date

Ich möchte nun wissen, ob es bei forum_visits.user = '1' und forum_visits.thread = '1' einen forum_visits.last_visit gibt der größer ist als das höchste forum_posts.date (bei thread = '1').

-> SUCHE forum_visits.last_visit (thread = 1, user = 1) DER GRÖßER IST ALS HÖCHSTES forum_posts.date (thread = 1)

Hat jemand eine Idee oder kann mir sogar die Lösung nennen bzw. einen Lösungsansatz?
 
Ich habe mir den Artikel komplett durchgelesen, bekomme mein Problem dennoch nicht in den Griff. Ich versuche das Ganze mal besser zu erleutern.

Die Funktion soll später sein, dass mir auf der Startseite meines (selbstprogrammierten) Forums angezeigt wird, ob es in dieser Kategorie (also in allen Threads, die zu dieser Kategorie gehören) Beiträge gibt, die ich noch nicht gelesen habe. Dazu habe ich die Tabelle forum_visits (user | thread | last_visit). Darin wird gespeichert, wann welcher User welchen Thread zuletzt gelesen hat. Die andere relevante Tabelle hierbei ist forum_posts (id, thread, cat, title, content, date).

Nun müsste ich auf der Startseite wissen, ob es in einem der Threads aus Kategorie XY (forum_threads.cat = 'XY') einen Beitrag gibt, dessen "Veröffentlichungs-Timestamp" (forum_threads.date) größer ist als der zum Thread zugehörige last_visit-Timestamp eines bestimmten Users (forum_vists.user = 'XY', forum_visits.thread= 'XY').

Es ist wirklich schwer zu erklären und ich weiß nicht, wie ich das verständlich rüberbringen soll. Ansich will ich eben nur die typische Forenfunktion nachbauen, dass man angezeigt bekommt, ob es in einer bestimmten Kategorie neue Beiträge gibt. Vielleicht gibt es dazu ja auch ein gutes Tutorial?

Ich hoffe, jemand hat eine Idee.

Edit
Ich habe das Problem doch lösen können, kleiner Denkfehler.


Grüße,
Leomuck
 
Zuletzt bearbeitet:
Ich hätte Dir folgenden Lösungsweg vorgeschlagen:

SELECT fv.last_visit FROM forum_visits fv WHERE fv.thread=1 and fv.user=1 and fv.last_visit>(SELECT Max(fp.date) FROM forum_posts fp WHERE fp.thread=1)

Wünsche noch eine gute Nacht. :)
 
Zurück