Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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_Sql_Ubuntu - Fatal编程技术网

Php 在mysql中将多行作为一行复制到另一个表中

Php 在mysql中将多行作为一行复制到另一个表中,php,mysql,sql,ubuntu,Php,Mysql,Sql,Ubuntu,我一直在寻找这个问题的答案,但找不到答案 我将sql与Drupal一起使用在LAMP堆栈上 首先,如果这在cron工作中更好,那么请让我知道 我的问题 我必须使用一个表单模块。它将数据保存为: ID, element_id, group_id, element_value 1 0 1 Name 2 1 1 Address 3 2 1

我一直在寻找这个问题的答案,但找不到答案

我将sql与Drupal一起使用在LAMP堆栈上

首先,如果这在cron工作中更好,那么请让我知道

我的问题

我必须使用一个表单模块。它将数据保存为:

ID, element_id, group_id, element_value
1            0         1           Name
2            1         1        Address
3            2         1            DOB    etc...
我希望能够获取元素值并将它们放在另一个表中的一行中

所以我现在

INSERT INTO new_table (name, street_address,street_address_line_2, city, state, zip,
                       country, dob)
SELECT element_value 
FROM submited_table
WHERE group_id = 'some_group_id'
我一直在思考如何将不同的值放在同一行中,以制作一条记录


有人能帮忙吗?

一种方法是通过聚合:

INSERT INTO new_table (name, address, dob)
    SELECT max(case when element_id = 1 then element_value end) as name,
           max(case when element_id = 2 then element_value end) as address,
           max(case when element_id = 3 then element_value end) as DOB,
           . . .
    FROM submited_table
    WHERE group_id = 'some_group_id';

这假设
element\u id
正在标识第一个表中的每一行所引用的内容。它还假设每个元素值对应于目标表中的一列。

这非常有效。现在我只需要弄清楚如何使用触发器或cron作业来自动执行,以便它影响多个提交组。@user3242628。您可以将
where
子句替换为
group by group\u id
。我已经设置了此项,但它也添加了以前添加的所有数据,而不仅仅是我为其触发时添加的新数据。@user3242628。你应该问另一个问题,包括触发器的代码。