2016-11-04 7 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

問題は使用するサブクエリーが多すぎます。最初のサブクエリは問い合わせを知ることができますが、2番目の深さはありません –

+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 

から何か他のものを必要とし、あなたの解決方法をお見せする場合のように簡略化することができると思いますクエリ。

+0

私の実際のクエリでは上記のロジックと同じでしたが、私の必要条件。倍数テーブルの列の計算が必要です。 –

+0

あなたのポストをありがとう、私は私の実際のクエリで上記のロジックを同じでしたが、計算が間違って私の要件に応じています。倍数テーブルの列の計算が必要です。 –

+0

あなたの例は間違っています。このクエリは同じ –

関連する問題