Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
Delphi 7 Enterprise
|
Re: MySQL: Bedingtes ORDER BY?
18. Aug 2006, 16:39
Hallo DGL-luke,
klar geht das...
SQL-Code:
$ sql = " SELECT t.*, u.username, u.user_id,
u2.username as user2, u2.user_id as id2,
p.post_username, p2.post_username AS post_username2,
p2.post_time
FROM " . TOPICS_TABLE . " t,
" . USERS_TABLE . " u,
" . POSTS_TABLE . " p,
" . POSTS_TABLE . " p2,
" . USERS_TABLE . " u2
WHERE t.forum_id = $forum_id
AND t.topic_poster = u.user_id
AND p.post_id = t.topic_first_post_id
AND p2.post_id = t.topic_last_post_id
AND u2.user_id = p2.poster_id
AND t.topic_type <> " . POST_ANNOUNCE . "
AND t.topic_title LIKE '$start_letter%'
$limit_topics_time
ORDER BY CASE WHEN t.forum_id IN (1, 2)
THEN NULL
ELSE t.topic_type
END DESC, t.topic_title ASC
LIMIT $start, ".$board_config[' topics_per_page'];
ich würde die Abfrage allerdings mit JOINs machen...
SQL-Code:
$ sql = " SELECT t.*, u.username, u.user_id,
u2.username as user2, u2.user_id as id2,
p.post_username, p2.post_username AS post_username2,
p2.post_time
FROM " . TOPICS_TABLE . " t
INNER JOIN " . USERS_TABLE . " u
ON t.topic_poster = u.user_id
INNER JOIN " . POSTS_TABLE . " p
ON t.topic_first_post_id = p.post_id
INNER JOIN " . POSTS_TABLE . " p2
ON t.topic_last_post_id = p2.post_id
INNER JOIN " . USERS_TABLE . " u2
ON p2.poster_id = u2.user_id
WHERE t.forum_id = $forum_id
AND t.topic_type <> " . POST_ANNOUNCE . "
AND t.topic_title LIKE '$start_letter%'
$limit_topics_time
ORDER BY CASE WHEN t.forum_id IN (1, 2)
THEN NULL
ELSE t.topic_type
END DESC, t.topic_title ASC
LIMIT $start, ".$board_config[' topics_per_page'];
Gruss
Thorsten
|
|
Zitat
|