2012-01-20 39 views
0

我有一個查詢這是...我該如何解決這個mysql?用php或mysql做到這一點?

SELECT m.msgFrom, m.msgTo, m.msgID, m.subject, m.dateTime, a.username 
FROM mailbox m 
JOIN accounts a ON (m.msgFrom = a.id) 
WHERE msgTo = $user 
     OR msgFrom = $user 
     AND parentID = 0 
ORDER BY dateTime DESC 
LIMIT 250 

是否有可能使取決於msgTomsgFrom價值ON變化而改變這個查詢。

我有一個用戶變量。如果用戶變量等於msgTo,則得到username,其中id等於msgFrom。如果用戶變量等於msgFrom得到username其中id等於msgTo

我希望我解釋得夠好嗎?

回答

1

您應該可以在ON子句中使用IF語句。這將與對方用戶的帳戶一起使用。 (即,如果該消息是從$user,然後username將是接收用戶,並且如果該消息是$user,然後username將是發送用戶。)

SELECT m.msgFrom, m.msgTo, m.msgID, m.subject, m.dateTime, a.username 
FROM mailbox m JOIN accounts a ON a.id=IF(msgTo=$user, msgFrom, msgTo) 
WHERE msgTo = $user OR msgFrom = $user AND parentID = 0 
ORDER BY dateTime DESC LIMIT 250 
+0

我還沒有看到這之前。我會試試這個,謝謝。 –

+0

是否與php中的三元語法相同? –

+0

這不是一樣的語法,但是子句的順序是相同的。也就是說,首先是條件,然後是第二個,如果爲真,最後是假。 –