Einzelnen Beitrag anzeigen

omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: MySQL: Bedingtes ORDER BY?

  Alt 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
  Mit Zitat antworten Zitat