2014-02-24 27 views
0

我一直在尋找的答案,這個問題並不能找到一個複製多行到另一個表中的MySQL

我用我的SQL使用Drupal在LAMP堆棧

第一單排,如果這是在一個cron作業更好的然後讓我知道

我的問題

我有,我必須使用窗體模塊。它節省了類似的數據:

ID, element_id, group_id, element_value 
1   0   1   Name 
2   1   1  Address 
3   2   1   DOB etc... 

我希望能夠採取元素值,並把它們放到1行中的另一個表

,所以我目前

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' 

我堅持至於如何將不同的值放在同一行來創建單個記錄。

任何人都可以幫忙嗎?要做到這一點

回答

0

一種方式是通過聚合:

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_id是,確定在第一個表的每一行指。它還假定每個元素值對應於目標表中的一列。

+0

這很好。現在我只需要弄清楚如何使用觸發器或cron作業來自動化它,以便它影響多個提交組。 –

+0

@ user3242628。 。 。你可以用'group by group_id'替換where子句。 –

+0

我有這個設置,但它也添加了所有以前添加的數據,而不僅僅是當我爲它啓動觸發器時的新數據。 –

相關問題