MySQL "разгруппировать" проблему - PullRequest
0 голосов
/ 25 мая 2011

У меня есть таблица в MySQL, подобная следующей.

mysql> select id, bill_output_id, bill_output_number
         from order_view;
+----+----------------+--------------------+
| id | bill_output_id | bill_output_number |
+----+----------------+--------------------+
|  1 | 2;4;5          | 500;1111111;12312  |
|  3 | NULL           | NULL               |
+----+----------------+--------------------+

Могу ли я "разгруппировать" второй и третий столбцы, чтобы получить следующий вывод?

+----+----------------+--------------------+
| id | bill_output_id | bill_output_number |
+----+----------------+--------------------+
|  1 | 2              | 500                |
|  1 | 4              | 1111111            |
|  1 | 5              | 12312              |
|  3 | NULL           | NULL               |
+----+----------------+--------------------+

Мой код вида:

CREATE ALGORITHM=UNDEFINED DEFINER=dev@localhost SQL SECURITY DEFINER VIEW order_view AS
select o.ID AS id
    ,o.DOC_NUMBER AS order_doc_number
    ,o.DOC_DATE AS order_doc_date
    ,o.TOTAL_SUM AS order_sum
    ,bin.id AS bill_input_id
    ,bin.doc_number AS bill_input_number
    ,bin.doc_date AS bill_input_date
    ,bin.total_sum AS bill_input_sum
    ,bout.id AS bill_output_id
    ,bout.doc_number AS bill_output_number
    ,bout.doc_date AS bill_output_date
    ,bout.total_sum AS bill_output_sum
from (((
porder o
left join bill_input_view bin on((bin.order_id = o.ID)))
left join bill_output_view bout on((bout.order_id = o.ID)))


CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW bill_input_view AS
select
group_concat(bin.ID) AS id
    ,group_concat(bin.DOC_NUMBER) AS doc_number
    ,group_concat(bin.DOC_DATE) AS doc_date
    ,group_concat(bin.TOTAL_SUM) AS total_sum
    ,bin.ORDER_ID AS order_id
from
bill_input bin group by bin.ORDER_ID


CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost SQL SECURITY DEFINER VIEW bill_output_view AS
select
group_concat(bin.ID) AS id
    ,group_concat(bin.DOC_NUMBER) AS doc_number
    ,group_concat(bin.DOC_DATE) AS doc_date
    ,group_concat(bin.TOTAL_SUM) AS total_sum
    ,bin.ORDER_ID AS order_id
from
bill_output bin group by bin.ORDER_ID
...