2017-02-14 6 views
0

Мне нужно выполнить поиск с использованием SQL, чтобы увидеть, соответствуют ли эти 3 столбца моему идентификатору. Я попробовал JOIN, но в столбцах нет точки соединения. Нет четкой корреляции. Я также пытался использовать UNION, но у них разное количество столбцов и разных типов столбцов. В принципе, мне нужно окунуться в 1 таблицу, чтобы получить ценность. Используйте это значение, чтобы окунуться во вторую таблицу, чтобы получить дополнительное значение. Затем используйте оба этих значения вместе с жестко заданным значением, чтобы окунуться в третью таблицу, чтобы получить уникальное значение. Затем используйте это уникальное значение, чтобы окунуться в четвертую таблицу, чтобы получить результаты, соответствующие уникальному значению. Вот запрос, который я в настоящее время: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

Смежные вопросы