2012-03-29 14 views
2

where句にselectステートメントを含むクエリがあります。私の質問は今、親のselectのデータにどのようにアクセスできますか?where句で選択し、現在の親選択列へのアクセス

例:

select * from TABLE_1 as t1 INNER JOIN TABLE_2 as t2 
where (... and ...) OR 
     (not exists(select * from TABLE_3 as t3 
           inner join TABLE_1 ON t3.t1_id = t1.id 

エラーが発生した場所の最後の行である:t1.id is not a column

テーブルt1から現在の値にアクセスするにはどうすればよいですか? 私はすべてのMySQLの5.1

+0

完全なクエリを投稿できますか? – Teja

+1

内部table_1をt4として、次の条件を満たす必要があります。t3.t1_id = t4.id where t4.id = t1.id –

答えて

1
SELECT 
    * 
FROM 
    TABLE_1 as t1 
    INNER JOIN TABLE_2 as t2 ON 
    t2.PK = t1.FK --Whatever your keys are 
WHERE 
    (... and ...) 
    OR 
    (
    NOT EXISTS (select * from TABLE_3 as t3 WHERE t3.t1_id = t1.id) 
) 
+0

JOINをTABLE_2に追加しました。 。解決策は、TABLE_3の行の存在をチェックする相関サブクエリが正しく作成されていないことでした。 TABLE_1に戻ってJOINするのではなく、t1エイリアス経由で列を使用するだけです。 –

0

ファーストを使用していますが、あなたは何をTABLE_1上JOIN TABLE_2意志を宣言する必要があります。

SELECT * 
FROM TABLE_1 AS t1 
INNER JOIN TABLE_2 AS t2 ON t2.t1_id = t1.id 

t1.id = t2.t1_id一例であり、あなたはあなたが参加したい列を決定する必要があります。その後、WHERE句では、すでに選択しているので、TABLE_1のINNER JOINを再度入力する必要はありません。

SELECT * 
FROM TABLE_1 AS t1 
INNER JOIN TABLE_2 AS t2 ON t2.t1_id = t1.id 
WHERE (... AND ...) OR 
(
    NOT EXISTS 
    (
     SELECT * 
     FROM TABLE_3 AS t3 
     WHERE t3.t1_id = t1.id 
    ) 
) 
関連する問題