2016-08-18 6 views
1

私はさらに、このようなサブクエリを実行し、サブクエリを実行する必要のあるMySQLのクエリがあります。今、このクエリはエラーunknown column t1.id.を投げて誰が最も内側にt1 table列を使用する方法を伝えることができますしてください内側のサブクエリで外側テーブルの列を使用する方法mysqlのwhere節?

SELECT id, 
    (SELECT COUNT(*) AS total FROM 
     (SELECT * FROM t3 WHERE t3.abcId = t1.id) t2 
    WHERE /*conditions*/) as total 
FROM t1 WHERE /* condtions */; 

をサブクエリwhere句。

SELECT id, @var := t1.id, 
    (SELECT COUNT(*) AS total FROM 
     (SELECT * FROM t3 WHERE t3.abcId = @var) t2 
    WHERE /*conditions*/) as total 
FROM t1 WHERE /* conditions */; 

しかし、この場合には @varは、それが最初の行の取得など、すべての行すなわち合計が同じ値を返すために更新され得ていない:私はまた、このような @variablesを通じてT1の列の値を渡すことを試みました。これにはどんな解決策も提案してください。

注: - 非常に複雑な計算のため、クエリのフローを更新することはできません。上記のクエリは、元のクエリフローの単なる例です。

+0

をt1.id T1副選択で – Jens

+0

私はすでにそれがエラーを取得した後に学びます。私はそれをしなければならないので、私は他の解決策を求めています。 – Ritesh

答えて

1

できませんこれは、SQLエンジンは1つ以上のレベル離れている場合、外部クエリの使用を許可しません。私は、代替案を提案し、サブのいずれかが選択避けることができます。

SELECT t1.id , 
     (SELECT COUNT(*) FROM t3 
     WHERE t3.abcID = t1.id 
      AND /*conditions */) as total 
FROM t1 
WHERE /*conditions */ 
0

最も内側のクエリはT3から 選択COLUMN_NAMESすることができ、t3.abcid ==あなたがアウターコラムを使用することはできません

+0

それは私の目的を解決しません..計算を台無しにする – Ritesh

関連する問題