Seite 1 von 1

sql- 2 tabelle zusamenschmeißen und sortieren

Verfasst: 02.02.2008 01:06
von metty84
hallo ich hab grade echt zu kämpfen ich bastel grade die portal box von nem blog um und möchte das in dieser box die 7 blogs drinne stehen deren letzter komentar oder deren erstellung zuletzt war. nur problematisch wirds dadurch das blogs und kommentare in unterschiedlichen tabellen gespeichert werden und das einzige was blogs und komment verbindet ist die blog-id (in der blog tabele heist die "id" in der comments tabelle heist die "comment_ad_id")

die blogs sind in der tabelle ".$tbl_prefixblogs."blogs gespeichert und die coments in der tabelle ".$tbl_prefixblogs."comments ich hab das soweit laufen das es ansich funzt nur werden mir blogs die nen comment haben doppelt ausgegeben.

das sieht dan so aus:
Testblog
Dank an die, di...
Dank an die, di...
Ferrari Enzo ge...
Sagt mir was ih...
Sagt mir was ih...
Wildlive Party ...
solte aber so aussehen
Testblog
Dank an die, di...
Ferrari Enzo ge...
Sagt mir was ih...
Wildlive Party ...
Sagt mir was ih...
Terrorwarnung!!!
kann mir da wer helfen das zu korigieren?


und so sieht derzeit meine sql-abfrage aus:

Code: Alles auswählen

$sqlblogs = "SELECT id, title, time AS timestamp FROM ".$tbl_prefixblogs."blogs
			UNION
			select b.id AS id, b.title, c.comment_time AS timestamp
			FROM ".$tbl_prefixblogs."blogs AS b
			LEFT JOIN ".$tbl_prefixblogs."comments AS c ON b.id = c.comment_ad_id 
			group by id
			order by timestamp desc 
			limit 7"; 
vielen dank schonmal im voraus!

mfg metty

Verfasst: 03.02.2008 22:24
von metty84
kay trotz der sehr geringen beteiligung möchte ich denoch euch das ergebniss nicht vorenthalten das ich nach stundenlangem tüfteln gefunden hab und was einwandfrei funzt!

Code: Alles auswählen

SELECT b.id, b.title, max((CASE WHEN c.comment_time > 0 THEN c.comment_time ELSE b.time END)) AS timestamp
			FROM orion_blogs_blogs AS b 
			LEFT OUTER JOIN orion_blogs_comments AS c ON b.id = c.comment_ad_id 
			group by id
			ORDER BY timestamp DESC
			LIMIT 7
mfg metty