Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将mysql数据解压到其他表_Php_Mysql - Fatal编程技术网

Php 将mysql数据解压到其他表

Php 将mysql数据解压到其他表,php,mysql,Php,Mysql,嗨,我有以下mysql数据 INSERT INTO `monthly` (`id`, `year`, `stat_id`, `cat_id`, `January`, `February`, `March`, `April`, `May`, `June`, `July`, `August`, `September`, `October`, `November`, `December`) VALUES (1, '2017', '12', '25', '1', '3', '1', '1', '3',

嗨,我有以下mysql数据

INSERT INTO `monthly` (`id`, `year`, `stat_id`, `cat_id`, `January`, `February`, `March`, `April`, `May`, `June`, `July`, `August`, `September`, `October`, `November`, `December`) VALUES
(1, '2017', '12', '25', '1', '3', '1', '1', '3', '4', '4', '2', '4', '', '', ''),
我希望它变成这样

INSERT INTO `monthlydata` (`id`, `year`, `monthName`, `stat_id`, `cat_id`, `data`) VALUES
(1, '2017', 'January', '12', '25', '1'),
(2, '2017', 'February', '12', '25', '3'),
(3, '2017', 'March', '12', '25', '1'),
(4, '2017', 'April', '12', '25', '1'),
(5, '2017', 'May', '12', '25', '3'),
(6, '2017', 'June', '12', '25', '4'),
(7, '2017', 'July', '12', '25', '4'),
(8, '2017', 'August', '12', '25', '2'),
(9, '2017', 'September', '12', '25', '4'),
(10, '2017', 'October', '12', '25', ''),
(11, '2017', 'November', '12', '25', ''),
(12, '2017', 'December', '12', '25', ''),

使用mysql/php是否有更简单的方法来实现这一点?您需要
UNPIVOT
您的数据。MySQL没有内置的函数来实现这一点,因此您需要使用多个查询

INSERT INTO `monthlydata` (`id`, `year`, `monthName`, `stat_id`, `cat_id`, `data`) VALUES
SELECT id, year, 'January', stat_id, cat_id, January
    FROM monthly WHERE monthName = 'January'
UNION ALL 
SELECT id, year, 'February', stat_id, cat_id, February
    FROM monthly WHERE monthName = 'February'
UNION ALL 
SELECT id, year, 'March', stat_id, cat_id, March
    FROM monthly WHERE monthName = 'March'
.....

ID
列可能会导致问题。取决于您如何定义它。如果是自动生成的,则可以将其从插入中删除,并让其自动生成。由于所有月份的行都具有相同的
ID
,因此需要处理该场景

您想使用PHP或您现有的MySQL数据将
插入转换为
字符串吗?我想通过phpMyAdminaF使用MySQL查看您的表后,我怀疑仅使用MySQL不可能至少在一个查询中实现。因为你必须转动桌子。好吧,你可以做12个工会,但那不太理想。。。LOL表中的
数据
字段是什么?谢谢兄弟..这样就可以了