我真的很感謝任何幫助,試圖簡化MySQL查詢。查詢的目的是從消息表(users_messages)中檢索具有以下列的消息:message_id,from_id,to_id,message_content,date_sent。試圖簡化MySQL查詢
from_id和to_id需要加入具有以下列的用戶表(用戶):user_id,user_username。
另外我應該提到的是,有一個阻塞的用戶表(users_blocked)可以過濾掉這個表中的user_id功能。
所有這些工作正常,消息與最新的第一個是我想要的。我唯一的問題是它沒有拉動相應的'message_content'。即它拉動最近的日期,但不是最近的消息。
也許我需要一種不同的方法(例如子查詢),但我無法繞過它。
下面是該查詢:
select m.message_content,
if(from_id < to_id, concat(from_id,to_id), concat(to_id,from_id)) as ft,
if (from_id = $my_id, to_id, from_id) as other_id,
max(date_sent) as most_recent
from users_messages m
left join users_blocked ub1 on (from_id = ub1.blocked_id and ub1.user_id = $my_id)
left join users_blocked ub2 on (to_id = ub2.blocked_id and ub2.user_id = $my_id)
where
(from_id = $my_id or to_id = $my_id)
and ub1.blocked_id is null
and ub2.blocked_id is null
group by
ft
order by
most_recent desc
對不起,這裏的表結構:
用戶
user_id user_username 1 Simon 2 Amber 3 Tom
users_messages
message_id from_id to_id date_sent message_content 1 1 2 2012-07-04 11:52:12 Hello 2 1 2 2012-07-04 12:32:24 Another message 3 1 2 2012-07-04 14:00:00 Hello again
users_blocked
user_id blocked_id 1 3
請提供您的表結構(一個或多個)。另外 - 它返回'message_content',但它不是正確的值?或者它沒有返回任何東西? – ethrbunny
這並不算太壞。地獄,你可以閱讀而不用滾動,這永遠是一種獎勵! –
不可怕,但我可能只是得到一個被阻止的用戶數組,並做一個不爲from_id – timpone