Оптимизирован запрос на выбор для двух таблиц с условиями - PullRequest
0 голосов
/ 04 апреля 2020

Уважаемые,

У меня есть ситуация, когда мне нужно написать один запрос SQL, чтобы получить записи из одной таблицы. Например, скажем, у меня есть две таблицы, TblParent и TblChild. Мне нужны записи из таблицы TblChild, как показано ниже:

SELECT * FROM TblParent WHERE condition_1 AND condition_2 AND condition_3: //possible many records

     //for each parent
     SELECT * FROM TblChild WHERE TblChild.fld1 = TblParent.fld1 AND TblChild.fld2 = TblParent.fld2
                              AND TblChild.fld3 > 0 ......

В основном мне нужны только записи TblChild, но для их получения мне нужен запрос TblParent с условия и для каждого из них мне нужно получить соответствующие записи TblChild.

Поскольку я новичок в SQL и не уверен в том, какой метод лучше выбрать с точки зрения оптимизации, помогите мне написать одну запрос по вышеуказанному сценарию.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2020
SELECT tc.*
FROM TblParent INNER JOIN
     TblChild tc
     ON tc.fld1 = TblParent.fld1 AND 
        tc.fld2 = tc.fld2 AND
        tc.fld3 > 0
WHERE condition_1_on_TblParent AND condition_2_on_TblParent AND condition_3_on_TblParent
1 голос
/ 04 апреля 2020

Просто добавьте ваш родительский запрос в дочерний запрос:

SELECT * FROM TblChild, 
     (SELECT * FROM TblParent WHERE condition_1 AND condition_2 AND condition_3) parents
     WHERE TblChild.fld1 = parents.fld1 
      AND TblChild.fld2 = parents.fld2
      AND TblChild.fld3 > 0 ......
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...