2017-05-16 24 views
0

請檢查下面的查詢,它會給我錯誤MySQL表示:文件 - Unknown column 'T.subscription_package_id' in 'on clause'MySQL的未知列「T.subscription_package_id」在「關於條款」

SELECT COALESCE(T.SUBSCRIPTION_STATUS, 'N') as SUBSCRIPTION_STATUS, c.assigned_executive as user_id,concat(ud.first_name,' ',ud.last_name) as username,c.id as customer_id, concat(c.first_name,' ',c.last_name) as customer_name ,c.mobile 
    FROM tbl_customer c 
    LEFT join tbl_user_details ud on c.assigned_executive=ud.user_id 
    LEFT JOIN (SELECT a1.customer_id, (CASE WHEN a1.available_credits > 0 THEN 'Y' ELSE 'N' END) AS SUBSCRIPTION_STATUS FROM tbl_customer_subscription a1 GROUP BY a1.customer_id)T ON c.id = T.customer_id 
    LEFT JOIN tbl_subscription_package_services z ON z.subscription_package_id = T.subscription_package_id 
    group by c.id 
+0

從上面的查詢中唯一明顯的是您的表'tbl_customer_subscription'不包含'subscription_package_id'列。如果您共享'create table'或'desc'語句的輸出,則只能討論Rest。 –

+0

當您使用子查詢執行'LEFT JOIN'時,您的子查詢必須包含您要引用的所有字段。 'T'別名沒有引用'subscription_package_id'列。這就是爲什麼你收到'Unknown column'錯誤。 –

回答

1

你的問題,是因爲你試圖獲得從子查詢和子查詢字段不具有所需的字段:

(SELECT a1.customer_id, 
     (CASE WHEN a1.available_credits > 0 THEN 'Y' ELSE 'N' END) AS SUBSCRIPTION_STATUS 
    FROM tbl_customer_subscription a1 
    GROUP BY a1.customer_id) T 

而這個子查詢沒有您要取的領域。當您使用子查詢的表僅選擇的字段都可以使用,這似乎是你認爲這是可行的,所以在子查詢添加字段

(SELECT a1.customer_id, 
     a1.subscription_package_id, -- here the missing field 
     (CASE WHEN a1.available_credits > 0 THEN 'Y' ELSE 'N' END) AS SUBSCRIPTION_STATUS 
    FROM tbl_customer_subscription a1 
    GROUP BY a1.customer_id) T 

所以當選擇加表格的不是工會你做ON z.subscription_package_id = T.subscription_package_id它會工作,因爲它現在存在。

+0

需要加入tbl_subscription_package_services與tbl_customer_subscription「subscription_package_id」在表 –

+0

可用對不起,我不明白。你可以編輯你的問題添加表結構嗎? –

相關問題