Я новичок в SQL oracle, у меня есть это требование, чтобы я должен был сгруппировать зарегистрированные данные по поставщику и по его запросу.Либо я должен использовать поставщика в качестве своего утверждения WHERE, либо я не знаю.,,У меня проблемы с этим, в настоящее время у меня есть этот SQL-оператор:
SELECT
F1.order_no,
F1.code,
F1.disp_order,
F1.lvl,
F1.description,
F3.state,
F2.supplier_id
FROM tbl_main F1
LEFT JOIN tbl_pattern F2
ON F1.order_no = F2.order_no
AND F1.code = F2.code
LEFT JOIN tbl_child F3
ON F1.order_no = F3.order_no
AND F1.code = F3.code
Это данные, зарегистрированные в таблице:
tbl_main
+----------+------+------------+-----+-------------+
| order_no | code | disp_order | lvl | description |
+----------+------+------------+-----+-------------+
| RM001-01 | 1 | 0 | 1 | HK140904-1A |
| RM001-01 | 2 | 1 | 2 | HK140904-1B |
| RM001-01 | 3 | 2 | 3 | HK140904-1C |
| RM001-01 | 4 | 3 | 4 | HK140904-1D |
| RM001-01 | 5 | 4 | 5 | HK140904-1E |
| RM001-01 | 6 | 5 | 2 | HK140904-1F |
| RM001-01 | 7 | 6 | 3 | HK140904-1G |
| RM001-01 | 8 | 7 | 3 | HK140904-1H |
| RM001-01 | 9 | 8 | 4 | HK140904-1I |
+----------+------+------------+-----+-------------+
tbl_pattern
+----------+------+------------+-----+-------------+---------+-------------+------------+
| order_no | code | disp_order | lvl | description | pattern | supplier_id | request_no |
+----------+------+------------+-----+-------------+---------+-------------+------------+
| RM001-01 | 1 | 0 | 1 | HK140904-1A | 1 | 0002 |20181001-001|
| RM001-01 | 5 | 4 | 5 | HK140904-1E | 1 | 0009 |20181001-002|
| RM001-01 | 1 | 0 | 1 | HK140904-1A | 1 | 0009 |20181001-003|
+----------+------+------------+-----+-------------+---------+-------------+------------+
tbl_parent
+----------+------+------------+-----+-------------+------------+
| order_no | code | disp_order | lvl | description | request_no |
+----------+------+------------+-----+-------------+------------+
| RM001-01 | 1 | 0 | 1 | HK140904-1A |20181001-001|
| RM001-01 | 5 | 4 | 5 | HK140904-1E |20181001-002|
| RM001-01 | 1 | 0 | 1 | HK140904-1A |20181001-003|
+----------+------+------------+-----+-------------+------------+
tbl_child
+----------+------+------------+-----+-------------+--------+------------+
| order_no | code | disp_order | lvl | description | state | request_no |
+----------+------+------------+-----+-------------+--------+------------+
| RM001-01 | 2 | 1 | 2 | HK140904-1B | 0 |20181001-001|
| RM001-01 | 6 | 5 | 2 | HK140904-1F | 3 |20181001-001|
| RM001-01 | 7 | 6 | 3 | HK140904-1G | 1 |20181001-002|
| RM001-01 | 8 | 7 | 3 | HK140904-1H | 3 |20181001-002|
| RM001-01 | 9 | 8 | 4 | HK140904-1I | 1 |20181001-002|
| RM001-01 | 3 | 2 | 3 | HK140904-1C | 0 |20181001-003|
+----------+------+------------+-----+-------------+--------+------------+
Ниже приведены некоторые примеры результатов запроса, я думаю, мне нужно сделать это по параметру supplier_id или /и request_no, при условии, что пользователь выбирает шаблон, но я не знаю, как:
Если пользователь выбирает 1-ю запись в tbl_pattern, результат будет:
+----------+------+------------+-----+-------------+--------+-------------+
| order_no | code | disp_order | lvl | description | state | supplier_id |
+----------+------+------------+-----+-------------+--------+-------------+
| RM001-01 | 1 | 0 | 1 | HK140904-1A | 2 | 0002 |
| RM001-01 | 2 | 1 | 2 | HK140904-1B | 0 | 0002 |
| RM001-01 | 3 | 2 | 3 | HK140904-1C | | 0002 |
| RM001-01 | 4 | 3 | 4 | HK140904-1D | | 0002 |
| RM001-01 | 5 | 4 | 5 | HK140904-1E | | 0002 |
| RM001-01 | 6 | 5 | 2 | HK140904-1F | 3 | 0002 |
| RM001-01 | 7 | 6 | 3 | HK140904-1G | | 0002 |
| RM001-01 | 8 | 7 | 3 | HK140904-1H | | 0002 |
| RM001-01 | 9 | 8 | 4 | HK140904-1I | | 0002 |
+----------+------+------------+-----+-------------+--------+-------------+
Если пользователь выбирает 2-ю запись в tbl_patternрезультат:
+----------+------+------------+-----+-------------+--------+-------------+
| order_no | code | disp_order | lvl | description | state | supplier_id |
+----------+------+------------+-----+-------------+--------+-------------+
| RM001-01 | 1 | 0 | 1 | HK140904-1A | | 0009 |
| RM001-01 | 2 | 1 | 2 | HK140904-1B | | 0009 |
| RM001-01 | 3 | 2 | 3 | HK140904-1C | | 0009 |
| RM001-01 | 4 | 3 | 4 | HK140904-1D | | 0009 |
| RM001-01 | 5 | 4 | 5 | HK140904-1E | 2 | 0009 |
| RM001-01 | 6 | 5 | 2 | HK140904-1F | | 0009 |
| RM001-01 | 7 | 6 | 3 | HK140904-1G | 1 | 0009 |
| RM001-01 | 8 | 7 | 3 | HK140904-1H | 3 | 0009 |
| RM001-01 | 9 | 8 | 4 | HK140904-1I | 1 | 0009 |
+----------+------+------------+-----+-------------+--------+-------------+
Если пользователь выбирает 3-ю запись в tbl_pattern, результат:
+----------+------+------------+-----+-------------+--------+-------------+
| order_no | code | disp_order | lvl | description | state | supplier_id |
+----------+------+------------+-----+-------------+--------+-------------+
| RM001-01 | 1 | 0 | 1 | HK140904-1A | 2 | 0009 |
| RM001-01 | 2 | 1 | 2 | HK140904-1B | | 0009 |
| RM001-01 | 3 | 2 | 3 | HK140904-1C | 3 | 0009 |
| RM001-01 | 4 | 3 | 4 | HK140904-1D | | 0009 |
| RM001-01 | 5 | 4 | 5 | HK140904-1E | | 0009 |
| RM001-01 | 6 | 5 | 2 | HK140904-1F | | 0009 |
| RM001-01 | 7 | 6 | 3 | HK140904-1G | | 0009 |
| RM001-01 | 8 | 7 | 3 | HK140904-1H | | 0009 |
| RM001-01 | 9 | 8 | 4 | HK140904-1I | | 0009 |
+----------+------+------------+-----+-------------+--------+-------------+
Столбец состояния автоматически устанавливается на '2', если он существует в tbl_parent