IFELSE операторы в запросе для ORDER BY - PullRequest
1 голос
/ 23 января 2011

Я немного запутался, как операторы IF ELSE работают в запросе.

Вот то, что я пытался, плюс варианты этого, но я не могу заставить его вернуть результатыбез ошибок ...

$get_trash = mysql_query("SELECT *
                            FROM message
                           WHERE message_to_user_id = '$user_id'
                             AND message_to_user_id_hide = 1
                              OR message_from_user_id = '$user_id'
                             AND message_from_user_id_hide = 1
                          IF message_to_user_id = '$user_id'
                          THEN ORDER BY message_to_user_id_hide_time DESC
                          ELSEIF
                              message_from_user_id = '$user_id'
                          THEN ORDER BY message_from_user_id_hide_time DESC
                          ENDIF") or die(mysql_error());

Теперь я использовал if if бесчисленное количество раз с PHP, но я никогда не использовал их в запросе mysql, так что если кто-нибудь сможет пролить свет на то, как вы поступаететогда я был бы очень признателен!

Ответы [ 2 ]

4 голосов
/ 23 января 2011

Было бы полезно, если бы вы могли сказать, как выглядит ваш стол. Но, основываясь на SQL, который вы пробовали, я думаю, что вы ищете что-то вроде этого:

 SELECT * FROM message WHERE
   (message_to_user_id = '$user_id' AND message_to_user_id_hide = 1)  OR
   (message_from_user_id = '$user_id' AND message_from_user_id_hide = 1)
 ORDER BY
    (CASE 
        WHEN message_to_user_id = '$user_id' 
        THEN message_to_user_id_hide_time 
        ELSE message_from_user_id_hide_time
     END) DESC
2 голосов
/ 23 января 2011

Делает ли это то, что вам нужно?

ORDER BY CASE '$user_id' WHEN message_to_user_id 
                         THEN message_to_user_id_hide_time 
                         WHEN message_from_user_id 
                         THEN message_from_user_id_hide_time END DESC
...