Hallo!
Ich programmiere mir gerade zu Übungszwecken ein kleines Forum. Nun stehe ich allerdings gerade vor einem kleinen Problem. Ich habe eine Tabelle (threads) wo alle Threads drin sind, und eine Tabelle (answers) wo alle Antworten drin sind.
Die Tabellen haben folgende Struktur:
threads
id | fid | titel | datum
-------------------
1 | 1 |test |2011-06-06 02:37:14
2 | 1 |bla |2011-06-06 03:30:12
...usw
answers (tid ist gleich die id in threads)
id | tid | fid | titel | text | datum
-------------------------------
1 | 1 | 1 |test | abc | 2011-06-06 02:37:14
2 | 2 | 1 |bla | xyz | 2011-06-06 03:30:12
3 | 1 | 1 | | ghj | 2011-06-06 03:34:11
...usw
Wie ihr ja alle wisst, wird der aktuellste Thread in einem Forum ja immer oben angezeigt, also sortiert von neu nach alt. Das ist ja kein Problem, würde so aussehen:
Wenn jetzt nun in einem alten Beitrag eine Antwort käme (wie in der obigen Tabellenstruktur), bleibt das aktuellere Thema mit dem Code trotzdem an 2. Stelle. Es wird ja nach dem Erstelldatum des Threads, nicht nach dem Erstelldatum der neuesten Antwort in einem Thread sortiert. Das kann man ja mit JOIN lösen, allerdings habe ich da noch nicht wirklich den Durchblick wie das funktionieren soll. Ich bin derzeit bei folgendem Code:
Nun, das funktioniert schon mal nicht...
Ich hoffe es ist klar, was ich möchte? Wie sollte die MySQL Abfrage richtig lauten?
Ich programmiere mir gerade zu Übungszwecken ein kleines Forum. Nun stehe ich allerdings gerade vor einem kleinen Problem. Ich habe eine Tabelle (threads) wo alle Threads drin sind, und eine Tabelle (answers) wo alle Antworten drin sind.
Die Tabellen haben folgende Struktur:
threads
id | fid | titel | datum
-------------------
1 | 1 |test |2011-06-06 02:37:14
2 | 1 |bla |2011-06-06 03:30:12
...usw
answers (tid ist gleich die id in threads)
id | tid | fid | titel | text | datum
-------------------------------
1 | 1 | 1 |test | abc | 2011-06-06 02:37:14
2 | 2 | 1 |bla | xyz | 2011-06-06 03:30:12
3 | 1 | 1 | | ghj | 2011-06-06 03:34:11
...usw
Wie ihr ja alle wisst, wird der aktuellste Thread in einem Forum ja immer oben angezeigt, also sortiert von neu nach alt. Das ist ja kein Problem, würde so aussehen:
PHP:
mysql_query("select * from threads where fid='".$_GET['fid']."' order by erstellt desc");
Wenn jetzt nun in einem alten Beitrag eine Antwort käme (wie in der obigen Tabellenstruktur), bleibt das aktuellere Thema mit dem Code trotzdem an 2. Stelle. Es wird ja nach dem Erstelldatum des Threads, nicht nach dem Erstelldatum der neuesten Antwort in einem Thread sortiert. Das kann man ja mit JOIN lösen, allerdings habe ich da noch nicht wirklich den Durchblick wie das funktionieren soll. Ich bin derzeit bei folgendem Code:
PHP:
mysql_query("select * from threads t1 join answers t2 on (t1.erstellt=t2.erstellt) where fid='".$_GET['fid']."' order by t2.erstellt desc");
Nun, das funktioniert schon mal nicht...
Ich hoffe es ist klar, was ich möchte? Wie sollte die MySQL Abfrage richtig lauten?