2017-02-14 9 views
0

これらの3つのカラムが自分のIDと一致するかどうかを調べるには、SQLを使用してルックアップを実行する必要があります。 JOINを試しましたが、列にはジョインポイントがありません。明確な相関はない。私もUNIONを試しましたが、それらは異なる数の列と異なる列のデータ型を持っています。基本的に私は値を得るために1つのテーブルに浸漬する必要があります。その値を使用して2番目のテーブルにディップし、追加の値を取得します。これらの値とハードコードされた値の両方を使用して、3番目のテーブルにディップして一意の値を取得します。その後、その一意の値を使用して4番目の表にディップし、一意の値に一致する結果を取得します。SQLと直接関係のないテーブルとの関連性

SELECT * FROM DEF_TABLE 
WHERE DEF_ID IN (
SELECT DEF_ID FROM DESCRIPTION_TABLE 
    WHERE MY_TYPE = 'EQP' 
    AND COL_TYPE = a 
    AND COL_NAME = b 
     IN (SELECT COL_TYPE as a, COL_NAME as b FROM TYPE_TABLE WHERE COL_TYPE IN 
      (SELECT COL_TYPE FROM EQP_TABLE WHERE ID = 9000))); 

EDIT:ここで私が現在持っているクエリである私はそれが動作する別々のコールとしてCOL_TYPEとCOL_NAMEチェックを実行していることがわかったが、非常にゆっくりと。別の方法がありますか?

SELECT * FROM DEF_TABLE 
WHERE DEF_ID IN (
SELECT DEF_ID FROM DESCRIPTION_TABLE 
    WHERE MY_TYPE = 'EQP' 
    AND COL_TYPE IN (SELECT COL_TYPE FROM TYPE_TABLE WHERE COL_TYPE IN 
        (SELECT COL_TYPE FROM EQP_TABLE WHERE ID = 9000)) 
    AND COL_NAME IN (SELECT COL_NAME FROM TYPE_TABLE WHERE COL_TYPE IN 
        (SELECT COL_TYPE FROM EQP_TABLE WHERE ID = 9000))); 

答えて

1

それはあなたが何をしようとしてのように私には見えますが

SELECT * FROM DEF_TABLE 
WHERE DEF_ID IN (
    SELECT DT.DEF_ID 
    FROM DESCRIPTION_TABLE DT 
     JOIN TYPE_TABLE TT 
     ON DT.COL_TYPE = TT.COL_TYPE 
     AND DT.COL_NAME = TT.COL_NAME 
     JOIN EQP_TABLE ET 
     ON DT.COL_TYPE = ET.COL_TYPE 
    WHERE DT.MY_TYPE = 'EQP' 
     AND ET.ID = 9000) 
+0

はどうもありがとうございました!これは魅力的に機能しました。私はそのようなクエリの中で結合を試みようとは考えていませんでした。 – jDub9

関連する問題