2013-10-24 53 views
0

爲什麼會出現這個錯誤? :爲什麼會出現此錯誤? (傳遞值加入表)

#1054 - Unknown column 'm2.s_sender_id' in 'where clause' 

在這個查詢中:在這個查詢中:我需要在這個地方傳遞m2.s_sender_id!

select w.ct,m5.pc, w.s_thread_id,w.unread , w.draft , w.s_user_id , m2.s_subject ,m2.s_sender_id starter, LEFT(m3.s_message,20) , m3.s_date_sent from 
(SELECT max(m.id) mxid , min(m.id) mnid ,min(r.s_unread_count) unread , 
    COUNT(IF(m.s_sender_id = 534 and m.s_status = 0,1,NULL)) draft, 
    COUNT(IF(m.s_sender_id = 534 or m.s_sender_id = 2,1,NULL)) pc, 
    count(r.s_thread_id) ct , 
    r.s_user_id , r.s_thread_id 
    FROM t_messages_messages m 
    LEFT JOIN t_messages_recipients r on (m.s_thread_id = r.s_thread_id) 
where r.s_is_deleted = 0 AND r.s_user_id = 534 AND r.s_sender_only = 0 AND (r.s_is_arshived is null or r.s_is_arshived = 0) 
GROUP BY m.s_thread_id) w 
inner join t_messages_messages m2 on (m2.id=w.mnid) 
inner join t_messages_messages m3 on (m3.id=w.mxid) 
inner join ( 
    SELECT COUNT(m4.id) pc FROM t_messages_messages m4 
    where (m4.s_sender_id = 534 or m4.s_sender_id = m2.s_sender_id) 
) m5 on (m5.s_thread_id = w.s_thread_id)enter code here 

回答

1

問題是與您的派生表:

( 
SELECT COUNT(m4.id) pc FROM t_messages_messages m4 
where (m4.s_sender_id = 534 or m4.s_sender_id = m2.s_sender_id) 
) m5 on (m5.s_thread_id = w.s_thread_id) enter 

它必須能夠在它自己的運行,它不能因爲M2並沒有在這個子查詢存在。如果要引用m2,則必須在派生表之外執行此操作,或將m2併入派生表中。

+0

怎麼樣?例如plz @danbracuk –

相關問題