Как написать подзапрос sql для нескольких объединений - PullRequest
0 голосов
/ 10 января 2020

Допустим, есть таблица деталей. Сначала я выбираю таблицу деталей с запросом, и она возвращает 500 строк. После отличного (partid) я получаю только 100.

выберите количество (отдельное значение) из части, где имя_партии iLike 'ABC%';

Теперь мне нужно l oop partid (uniq) и запросить таблицу 'PartAlt', чтобы получить 'alternatepartid'. И у этой таблицы есть «partid», поэтому я могу присоединиться.

Для каждого l oop я получу 10 или около того, но мне нужно только 'alternatepartid' из этих строк.

выберите alternatepartid из PartAlt, где mpnid = xxx Итак, в конце l oop у меня будет 1000 альтернативных частей.

Теперь для каждого l oop этих результатов я беру альтерпартид и соединение / запрос с первой таблицей 'Часть' выше.

Итак, это объединение таблицы для получения нескольких строк.

как мне написать это с помощью подзапроса и / или объединения?

Ответы [ 2 ]

0 голосов
/ 10 января 2020

Вам кажется, что select distinct и join. Один из методов:

select distinct alternatepartid
from Part p join
     PartAlt pa
     on pa.partid = p.partid
where p.partname iLike 'ABC%';
0 голосов
/ 10 января 2020

Что-то вроде приведенного ниже запроса должно взять ваш первый запрос (без подсчета) и использовать его в качестве подзапроса, который присоединяется к другой таблице со столбцом partid:

select PartAlt.alternatepartid from 
  (select distinct partid from Part 
     where partname iLike 'ABC%') as uniq_parts 
join Part as PartAlt on uniq_parts.partid = PartAlt.mpinid;

Вы также можете использовать cte , (with .. as), о котором иногда легче рассуждать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...