IF ELSEステートメントがクエリ内でどのように機能するかは、ちょっと混乱します。ここでORDER BYのクエリ内のIFELSEステートメント
は、私がしようとし、それに加えてのバリエーションされてきたものだが、私はそれがエラーなしで結果を戻すために取得するように見えることはできません...
$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 else文を使用しました何度もPHPを使っていますが、mysqlクエリの中でこれを使ったことはありませんでした。
私が注文したの突起のようなものがそのように行うことができるとは思わない:しかし、あなたが試したSQLに基づいて、私はあなたが探しているものは、これらの線に沿って何かだと思います。あなたはPHPでクエリを構築したり、ストアドプロシージャ内でこのジョブを実行する方が良いです – Perpetualcoder
WHERE句に問題があります - (from、to)が正しくないため正しい結果を返さないオプティマイザには明らかです。あなたはそれらの周りに角括弧が必要です。第2に、fromフィールドとtoフィールドの両方が結果セットに含まれます。両方のカラムで同時に注文することはできません。この問合せは、UNION文として使用する方がよいでしょう。 –
@OMG - MySQLとSQL Serverと私はほとんどすべてのDBMSがORの前に置かれていると思うので、非常に明白です。http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html – RichardTheKiwi