sortierung

pangu

Angesehenes Mitglied
hab gerade ne denkblockade:

nehmen wir an ich habe folgende tabellen:
-thema:
id | gruppeid| titel

-nachricht:
id | gruppeid| text | datum


wie kann ich jetzt für eine gruppe $g die themen (sortiert nach datum des letzten texts in den themen) ausgeben?

das funktioniert schonmal nicht richtig:
$abfrage = "SELECT a.id,a.titel FROM thema AS a, nachricht AS b WHERE a.gruppeid='$g' AND b.gruppeid='$g' ORDER BY b.datum";

? thx
 
Wozu soll das denn gut sein?

In Tabelle A hast Du dann sagen wir 3 Datensätze mit der Gruppe "1"
In Tabelle B hast Du 20 Datensätze mit der Gruppe "1"

Eine eindeutige Zuordnung ist dann ja nicht möglich, ist das Absicht? Oder ist gruppeid in Tabelle A eindeutig? Wenn ja kannst Du auch direkt das Feld "id" nehmen ...

Bzw. in Tabelle B müsste eigentlich ein Feld "themenid" drin sein oder?


Ansonsten ist Dein Statement doch okay, außer dass Du anstatt a.gruppeid='$g' AND b.gruppeid='$g' einen join machen solltest a.gruppeid='$g' AND b.gruppeid=a.gruppeid
 
stimmt hab mich oben vertan, nochmal algemein:

gruppethema (welche themen in welcher gruppe)
id | gruppe_id | titel

texte
id | gruppe_id | thema_id | text | datum


jetzt möchte ich für eine beliebige gruppe $g auslesen, welche themen in dieser gruppe vorhanden sind.
die ausgabe der themen soll nach zeitpunkt des letzten textes in den jeweiligen thema erfolgen.

irgendwie verzwickt..
sad.gif
 
Huhu!

Wenn Du die ThemenID in der zweiten Tabelle hast, kannst Du die GruppenID da rauswerfen, weil Du die ja sowieso in der ersten Tabelle drinstehen hast (Thema Redundanz, Normalisierung).

SELECT a.id, a.titel, b.datum FROM themen a, posts b where a.gruppeid = 1 and b.themaid = a.id and b.datum = (SELECT MAX(c.datum) FROM posts c WHERE c.themaid = b.themaid)

So würde es zum Beispiel gehen wenn Du das Datum verwenden willst. Bei Posts reicht aber evtl. auch die höchste ID, da eine höhere ID == späteres Postdatum ist (rein theoretisch *g*). Dann wäre die Abfrage schneller, weil es einfacher für die DB ist die MAX(ID) abzufragen als die 2 Datumsfelder zu vergleichen.

Denk dran Schlüssel auf die ID Felder zu setzen, sonst wirds ganz schnell ganz langsam *g*
 
Zurück
Oben