Объединить данные двух таблиц в соответствии с условием «родительские и дочерние отношения» - PullRequest
1 голос
/ 03 марта 2020

У меня есть две таблицы: workorder и wotasks.
SCRIPTS: Для создания таблиц и сценариев вставки данных, как показано ниже

CREATE TABLE workorder  (
    wonum INT, siteid VARCHAR(5),reporteddate date
);

CREATE TABLE woTasks (
    wonum INT, siteid VARCHAR(5),parent INT
);


INSERT INTO workorder   (wonum,siteid,reporteddate) 
values 
(5000503,'MCT','01-DEC-2018'),
(5000504,'MCT','01-DEC-2018'),
(5000505,'MCT','11-DEC-2018'),
(5000506,'MCT','01-MAR-2018'),
(5000507,'MCT','21-FEB-2018'),
(5000508,'MCT','01-MAY-2018');

select * from workorder;

INSERT INTO woTasks (wonum,siteid,parent) 
values 
(5000531,'MCT','5000503'),
(5000532,'MCT','5000503'),
(50005061,'MCT','5000506'),
(50005062,'MCT','5000506'),
(50005063,'MCT','5000506'),
(50005081,'MCT','5000508');

select * from woTasks;

Мне необходимо получить данные из этих таблиц на основе следующих условий
все WONUM от заказа (где указана дата> = 1-мая-2018 и отчетная дата <= 31-DE C -2018) + весь его дочерний выигрыш из таблицы wotasks <br>Результат должен быть как это

wonum
50005003  
5000531 
5000532
5000505   
5000506    
50005061   
50005063 
5000508    
50005081  
5000504    

пожалуйста, помогите мне написать запрос для результата, как указано выше

1 Ответ

0 голосов
/ 03 марта 2020

Есть некоторые проблемы с вашим типом данных для wonum и родительского столбца. Если я предполагаю, что все столбцы имеют значение типа nuf типа char, вы можете использовать UNION ALL logi c, как показано ниже, для достижения желаемого результата -

DEMO HERE

SELECT wonum FROM workorder
UNION ALL
SELECT B.wonum FROM workorder A
INNER JOIN woTasks B ON A.wonum = B.parent
WHERE reporteddate >= '1-May-2018'
AND reporteddate <= '31-DEC-2018'
ORDER BY 1

Но если все ваши значения являются Number, просто преобразуйте их в Char / String в части ORDER BY, чтобы упорядочить результаты, как показано на рисунке.

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