MySQL: создание дочерних элементов для каждого родителя в таблице MySQL - PullRequest
0 голосов
/ 02 марта 2019

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

1 Таблица table_one

+---+------------+-------------+---------+
|id |  prj_id    |   name      | status  |
+---+------------+-------------+---------+
| 1 | 808361     | projectOne  | open    |
| 2 | 808365     | projectTwo  | close   |
| 3 | 808370     | projectThree| open    |
+---+------------+-------------+---------+

2 Таблица table_two

+---+------------+---------+
|id |  prj_id    |   task  |
+---+------------+---------+
| 1 | 808361     | java    |
| 2 | 808365     | c++     |
| 3 | 808365     | python  |
| 4 | 808370     | java    |
| 5 | 808370     | c++     |
| 6 | 808370     | python  |  
+---+------------+---------+

Мои запросы MySQL:

SELECT tt.prj_id, tt.taks, to.status
FROM table_two tt
INNER JOIN table_one to ON to.prj_id = tt.prj_id

Результат запроса MySQL:

+---+------------+---------+--------+
|id |  prj_id    |   task  | status |
+---+------------+---------+--------+
| 1 | 808361     | java    | open   |
| 2 | 808365     | c++     | close  |
| 3 | 808365     | python  | close  |
| 4 | 808370     | java    | open   |
| 5 | 808370     | c++     | open   |
| 6 | 808370     | python  | open   | 
+---+------------+---------+--------+

Теперь я хотел бы прийти к следующему результату, и я просто не знаю, какпродолжить

Мой желаемый вывод:

+---+------------+---------+--------+
|id |  prj_id    |   task  | status | 
+---+------------+---------+--------+
| 1 | 808361     | -       | -      |  
| 2 | 808361     | java    | open   |   
| 3 | 808365     | -       | -      |   
| 4 | 808365     | c++     | close  |   
| 5 | 808365     | python  | close  |   
| 6 | 808370     | -       | -      |   
| 7 | 808370     | java    | open   |   
| 8 | 808370     | c++     | open   |   
| 9 | 808370     | python  | open   |   
+---+------------+---------+--------+

Или я могу как-то решить проблему с Python или чем-то еще.

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 02 марта 2019

если вы выполните следующее

select tableone.id, tableone.prj_id, tabletwo.task, tableone.status, tableone.id
from tableone, tabletwo
where tabletwo.prj_id = tableone.prj_id;

Результат теперь будет

 id,   prj_id,    task,     status,    id(parent)
'1',  '808361',   'java',   'open',    '1'
'2',  '808365',   'c++',    'closed',  '2'
'2',  '808365',   'python', 'closed',  '2'
'3',  '808370',   'java',   'open',    '3'
'3',  '808370',   'c++',    'open',    '3'
'3',  '808370',   'python', 'open',    '3'

, чтобы сделать родительский идентификатор, вы также можете использовать некоторую причину логики питона, и эффективный способ будетродительский идентификатор, который вы хотите просмотреть с помощью python

Логика python будет такой же для первого идентификатора проекта, если он открыт, тогда родительский идентификатор будет равен еще одному 0, затем будет увеличен на единицу и проверен для второго проекта и наоборот

Надеюсь, вы получите это

...