0
我遇到問題了解如何爲下面複製的查詢創建一個case語句。本質上,查詢所做的只是從messages_messages查詢當前用戶發送的數據($ userid)或者發送原始線程($ threadid)的發件人。對於除線程的原始發件人之外的所有人來說,這是一個完美的SELECT,他們應該能夠將所有與該線程相關的消息都提取出來。幫助創建正確的CASE語句
基本上我需要添加SQL相當於以下語句:
WHERE messages_threads.id = $threadid
if($userid == messages_threads.senderid) {
// Don't add an AND clause
} else {
// Add the following AND clause
AND (messages_messages.senderid = $userid OR messages_messages.senderid = messages_threads.senderid)
}
這裏是我目前使用的查詢:
SELECT messages_messages.id, messages_messages.senderid, username AS sendername, pictures.url AS picture, body, UNIX_TIMESTAMP(time) AS unixtimestamp
FROM messages_messages
JOIN messages_threads ON messages_threads.id = messages_messages.threadid
JOIN users ON messages_messages.senderid = users.id
LEFT JOIN pictures ON messages_messages.senderid = pictures.userid AND pictures.profile = 1
WHERE messages_threads.id = $threadid
AND (messages_messages.senderid = $userid OR messages_messages.senderid = messages_threads.senderid)
ORDER BY time ASC
非常感謝!唯一的問題是$ userid == messages_threads中的兩個等號 - 應該只是一個等號。 – Walker 2011-04-26 20:47:53
@Walker:啊葉,編輯修復 – Claudiu 2011-04-26 20:49:33