2016-11-04 26 views
1

我無法使用此「enquiries.enquiry_id」一欄爲子查詢。我也嘗試過使用表的別名,但沒有成功進入此 錯誤代碼:1054.'where子句'中的未知列'enquiries.enquiry_id'無法使用列成子查詢 - MySQL數據庫

我們可以使用其他方式嗎?

Tables 
------------------------------ 
Enquiries 
------------------------------ 
enquiry_id | name 
1   A 
2   B 
3   C 
4   D 
------------------------------ 
Bookings 
------------------------------ 
booking_id | name |enquiry_id 
1   A  1 
2   B  2 
3   C  2 
4   D  3 
------------------------------ 


SELECT 
    (SELECT 
      COUNT(*) 
     FROM 
      (SELECT 
       booking_id 
      FROM 
       bookings 
      WHERE 
       enquiry_id = enquiries.enquiry_id) AS t) AS total 
FROM 
    enquiries 
WHERE 
    enquiry_id = 2 

enter image description here

+0

問題是你使用了太多的子查詢。第一個子查詢就可以知道來電諮詢,但第二個深度犯規 –

+0

它不是實際的查詢它只是樣品,不過我想同樣的邏輯在我的實際查詢 –

回答

4

我覺得你的查詢可以簡化像

SELECT COUNT(e.booking_id) as total 
FROM enquiries e 
WHERE e.enquiry_id = 2 

或者如果你需要從booking

SELECT COUNT(b.booking_id) as total 
FROM bookings b 
JOIN enquiries e 
    ON b.enquiry_id = e.enquiry_id 
WHERE e.enquiry_id = 2 

別的東西,你如何解決您的查詢。

SELECT 
     (SELECT COUNT(*) 
     FROM bookings b 
     WHERE b.enquiry_id = e.enquiry_id) AS total    
FROM 
    enquiries e 
WHERE 
    enquiry_id = 2 
+0

感謝您的文章,我在實際查詢做了與上述相同的邏輯,但計算來錯了,因爲每我的要求。我想多列表的列計算。 –

+0

感謝您的文章,我在我的實際查詢中做了與上述邏輯相同的內容,但根據我的要求計算出錯。我想多列表的列計算。 –

+0

然後你的例子是錯誤的。這個查詢也是一樣的 –