Blutschlumpf
Fleet Admiral
- Registriert
- März 2001
- Beiträge
- 20.642
Gegeben ist ein phpBB Forum.
Nun wollte ich ne Art Vorschau der letzten Posts machen (wie z.B. bei CB rechts auf der Seite).
Mein Problem ist, dass ich jetzt noch nen Filter brauche, der mir doppelte topic_id rausfiltert, und zwar so, dass der Datensatz mit der kleinsten post_id bleibt.
Mit DISTINCT gehts nicht, mit ner Kombi aus ORDER BY und LIMIT klappts auch nicht.
Wenn ich mit Group BY ASC/DESC versuche bekomm ich immer die Sätze mit der höchsten post_id statt der niedrigsten.
Da gibts doch sicher ne coole Lösung für, denn ich wollte das nicht über php oder ne Hilfstabelle machen.
Edit: Kommando zurück, meine Lösung war Bullshit.
Code:
mysql> describe posts;
+-----------------+-----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------------+------+-----+---------+----------------+
| post_id | mediumint(8) unsigned | | PRI | NULL | auto_increment |
| topic_id | mediumint(8) unsigned | | MUL | 0 | |
| forum_id | smallint(5) unsigned | | MUL | 0 | |
| poster_id | mediumint(8) | | MUL | 0 | |
| post_time | int(11) | | MUL | 0 | |
| poster_ip | varchar(8) | | | | |
| post_username | varchar(25) | YES | | NULL | |
| enable_bbcode | tinyint(1) | | | 1 | |
| enable_html | tinyint(1) | | | 0 | |
| enable_smilies | tinyint(1) | | | 1 | |
| enable_sig | tinyint(1) | | | 1 | |
| post_edit_time | int(11) | YES | | NULL | |
| post_edit_count | smallint(5) unsigned | | | 0 | |
| post_attachment | tinyint(1) | | | 0 | |
+-----------------+-----------------------+------+-----+---------+----------------+
14 rows in set (0.00 sec)
mysql> describe posts_text;
+--------------+-----------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-----------------------+------+-----+---------+-------+
| post_id | mediumint(8) unsigned | | PRI | 0 | |
| bbcode_uid | varchar(10) | | | | |
| post_subject | varchar(60) | YES | | NULL | |
| post_text | text | YES | | NULL | |
+--------------+-----------------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql>
Nun wollte ich ne Art Vorschau der letzten Posts machen (wie z.B. bei CB rechts auf der Seite).
Code:
select p.post_id, p.topic_id, pt.post_subject from posts p, posts_text pt WHERE p.post_id=pt.post_id ORDER BY topic_id DESC, p.post_id ASC;
Mit DISTINCT gehts nicht, mit ner Kombi aus ORDER BY und LIMIT klappts auch nicht.
Wenn ich mit Group BY ASC/DESC versuche bekomm ich immer die Sätze mit der höchsten post_id statt der niedrigsten.
Da gibts doch sicher ne coole Lösung für, denn ich wollte das nicht über php oder ne Hilfstabelle machen.
Edit: Kommando zurück, meine Lösung war Bullshit.
Zuletzt bearbeitet: