Как запустить SQL-запрос несколько раз и объединить результаты в один вывод? - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть список из 2500 чисел obj, хранящихся в Excel, для которых мне нужно запустить приведенный ниже SQL:

SELECT    
    a.objno,
    a.table_comment,
    b.queue_comment
FROM
    aq$_queue_tables a 
JOIN 
    AQ$_QUEUES b ON a.objno = b.table_objno
WHERE
    a.objno = 19551;

Есть ли способ написать цикл над SQL с использованием objno подачи изсписок или из другой таблицы?Я также хочу сохранить / произвести все результаты каждого цикла в виде одного вывода.

Я рассмотрел вариант загрузки чисел в новую таблицу и добавления условия where:

a.objno=(SELECT newtab.objectno FROM newtab);

Однако логика, которую я напишу в запросе, исключит определенные объектно результаты,Допустим, что связанный объектно имеет определенный queue_comment на определенную дату, связанный с этим объектно.Я не хочу тянуть эту запись.Это условие будет соответствовать некоторым объектам и не будет соответствовать другим.При наличии этого условия и выполнении запроса ко всем объектам возвращается 0 результатов.Я не мог поделиться исходной логикой, так как она выявила бы определенные бизнес-правила, и это было бы нарушением какой-то политики.

Итак, мне нужно выполнить запрос для каждого объекта отдельно и объединить результаты.

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

Любые рекомендации или ссылки на полезные темы также приветствуются.

Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Чтение комментариев и всего, что, я думаю, вам нужно улучшить в Excel с помощью 2 дополнительных столбцов и загрузить в новую таблицу.

IN также можно использовать следующим образом:

SELECT    
    a.objno,
    a.table_comment,
    b.queue_comment
FROM
    aq$_queue_tables a 
JOIN 
    AQ$_QUEUES b ON a.objno = b.table_objno
WHERE
    (a.objno,a.table_comment,b.queue_comment) IN  (19551,'something','something');

так с новой таблицей будет:

 WHERE
        (a.objno,a.table_comment,b.queue_comment) IN 
        (select n.objno, n.table_comment, n.queue_comment from new_table n)
0 голосов
/ 04 февраля 2019

Один из вариантов - загрузить номера объектов из листа Excel в таблицу базы данных и выполнить запрос следующим образом.Предполагая, что newtab - это таблица, в которую загружаются объектно.

SELECT    
a.objno,
a.table_comment,
b.queue_comment

FROM
    aq$_queue_tables a JOIN AQ$_QUEUES b on a.objno = b.table_objno
WHERE
    a.objno IN (SELECT newtab.objectno FROM newtab);

Я использовал подзапрос, присоединение к aq $ также может работать.

...