Выбрать в предложении где, доступ к текущим родительским столбцам выбора - PullRequest
2 голосов
/ 29 марта 2012

У меня есть запрос, который содержит оператор select в предложении where. Мой вопрос теперь, как я могу получить доступ к данным select родителя.

Пример:

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

Ответы [ 2 ]

1 голос
/ 29 марта 2012
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 голосов
/ 29 марта 2012

Прежде всего, вам нужно объявить, что вы будете JOIN TABLE_2 в TABLE_1.

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

t1.id = t2.t1_id - это просто пример, вам нужно решить, к каким столбцам вы хотите присоединиться. Тогда в вашем предложении WHERE вам не нужно снова вводить INNER JOIN в TABLE_1, поскольку вы уже выбираете его.

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
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...