2014-03-18 16 views
0

我正在嘗試執行SQL查詢以獲取2個用戶之間發送的所有消息:「發件人」和「收件人」(是的,我知道這是拼錯的)是Users表的外鍵。如何對加入的數據執行「where」子句

我想找回當前用戶發送或接收的所有消息以及消息中涉及的其他人的用戶名。

我有JOIN工作(如果我刪除where子句我收到所有消息),但我不知道如何限制它使用where

mysql_query(sprintf(" 
SELECT m.Content, us.Name Send, ur.Name Rec, m.Timestamp 
FROM Messages m 
JOIN Users us ON us.UserID = m.Sender 
JOIN Users ur ON ur.UserID = m.Reciever 
WHERE Send = '%s' or Rec = '%s' 
ORDER BY TIMESTAMP DESC 
"), $user, $user); 
+0

下去。試試吧。另外,看IN() – Strawberry

+0

SELECT m.Content,us.Name Send,ur.Name Rec,m.Timestamp FROM Messages m JOIN Users us us us.UserID = m.Sender JOIN Users ur ur.UserID = m.Reciever WHERE us.Name ='%s'或ur.Name ='%s' ORDER BY TIMESTAMP DESC – cyadvert

+0

草莓,我不清楚你的建議。 cyadvert,我不認爲這工作,我得不到結果 – user3434701

回答

2

您不能在WHERE子句中使用列別名。請參閱this SO question

WHERE條款應該是:

WHERE us.Name = '%s' OR ur.Name = '%s' 
0

你是幾乎沒有,只是改變它稍微像下面

SELECT m.Content, us.Name as Send, 
ur.Name as Rec, 
m.Timestamp 
FROM Messages m 
JOIN Users us ON us.UserID = m.Sender 
JOIN Users ur ON ur.UserID = m.Reciever 
WHERE us.Name = '%s' or ur.Name = '%s' <-- Change Here 
ORDER BY TIMESTAMP DESC