SQL-Abfrage.In welchem Forum-Thread wurde am meisten gepostet..
joe
- datenbank
Joe.
Hey,
ich habe eine Datenbank mit diesen zwei Tabellen:
board_thread
tid threadtitle creationtime
board_posts
pid tid post creationtime
Ich hätte gerne die "meist diskutierten Threads der letzten 3 Tage".
D.h.
Gib mir die 10 Threads in der in den letzten 3 Tagen die meisten Posts gemacht wurden.
Wie formuliere ich sowas in SQL?
Muss ja irgendwie so laufen:
SELECT tid, threadtitle FROM board_thread
INNER JOIN board_posts ON ...
ORDER BY FUNKTION(board_posts)
Ich hab absolut kein Plan wie das gehen soll.
Ich nutze übrigens PostgreSQL.
Grüße, Joe
Also, die Tabellen joinen ist schon mal der Anfang. Dann WHERE posts.creationtime > "letzte 10 Tage" und du hast alles was in den letzten Tagen geschrieben wurde.
Dann SELECT tid, count(*) ... GROUP BY tid und du kriegst jede ThreadID aus diesen Beiträgen.
Das ist zumindest ein Anfang für dich.
Also, die Tabellen joinen ist schon mal der Anfang. Dann WHERE posts.creationtime > "letzte 10 Tage" und du hast alles was in den letzten Tagen geschrieben wurde.
Hm stimmt.
Dann SELECT tid, count(*) ... GROUP BY tid und du kriegst jede ThreadID aus diesen Beiträgen.
Als Subselect?
Ich hab noch nicht soviel Erfahrung damit, wie muss das aussehen?
Als Subselect?
Nö dein Statement sieht dann so etwa aus
SELECT tid, count(*)
FROM TAbelle JOIN Tabelle+
WHERE Datum > ...
GROUP BY tid
SELECT tid, count(*)
FROM TAbelle JOIN Tabelle+
WHERE Datum > ...
GROUP BY tid
Mit Tabelle+ ist dann board_posts gemeint oder?
muss da hinter kein ON ... ? Hat das "+" dahinter Bedeutung?
Also muss es:
SELECT tid, count(*) AS anz
FROM board_thread JOIN board_posts+
WHERE creationtime > now()-(1000*60*60*24)*3
GROUP BY anz
Richtig? Ich kann es gerade nich testen, bin in der Schule.
Ich muss doch by "anz" sortieren, ich will ja die meist diskutierten threads haben..
Das war ja auch nur ein grober Vorschlag, den du selber ausbauen kannst.
muss da hinter kein ON ... ?
Doch klar
Hat das "+" dahinter Bedeutung?
Nö, es zeigt dass ich nicht wirklich Zeit hatte beim schreiben :-)
Ich muss doch by "anz" sortieren, ich will ja die meist diskutierten threads haben..
Dich hält niemand davon ab ;-) ORDER BY wäre dein Stichwort.
Klingt irgendwie schon stark nach unmotivierter Hausaufgabe?
moin,
ich habe eine Datenbank mit diesen zwei Tabellen
welches dbms und welche version ?
Ilja
hi.
welches dbms und welche version ?
postgresql 8.3
welches dbms und welche version ?
postgresql 8.3
wird aber bald auf 8.4.1 geupgradet