0
votes

I have 2 tables made by contact form in Wordpress. I use CFDB-plugin(https://cfdbplugin.com/) to save and view forms. Cfdb saves everything in one cf7dbplugin_submits-table but in Wordpress they appear as normal tables. I'm trying to left join pivoted tables on 'id' but i'm stuck.

Table in MySQL:

wp_6_cf7dbplugin_submits
  submit_time   | form_name | field_name | field_value | field_order
---------------------------------------------------------------------
1650634288.1320 |   Table1  |    name    |  Name1      |   0
1650634288.1320 |   Table1  |    id      |  01         |   1
1650963344.4858 |   Table2  |    id      |  01         |   0
1650963344.4858 |   Table2  |    hours   |  10         |   1
1650963344.4858 |   Table2  |    date    |  26.4.2022  |   2
and so on...

View in Wordpress CFDB:

Table1
 id   |  name   |
---------------------
 01   |  Name1  |
 02   |  Name2  | 
 03   |  Name3  | 

View in Wordpress CFDB:

Table2
id   |   hours  |   date    |
-----------------------------
01   |    10    | 26.4.2022 |
02   |    5     | 22.4.2022 |
04   |    20    | null      |

Joined result should be:

id    |  name   |   hours  | date 
-------------------------------------
01   |   Name1  |    10    | 26.4.2022
02   |   Name2  |    5     | 22.4.2022
03   |   Name3  |    null  | null
04   |   null   |    20    | null

This doesn't work:

SELECT
MAX(IF(field_name='name', field_value, NULL )) AS name,
MAX(IF(field_name='id', field_value, NULL)) AS id
FROM wp_6_cf7dbplugin_submits
LEFT JOIN
(SELECT
MAX(IF(field_name='hours', field_value, NULL )) AS hours,
MAX(IF(field_name='id', field_value, NULL)) AS id,
MAX(IF(field_name='date', field_value, NULL)) AS date
FROM wp_6_cf7dbplugin_submits
WHERE form_name = 'Table2'
) AS Table1
ON Table1.id = Table2.id
WHERE form_name = 'Table1';
Have you considered asking your question on wordpress.stackexchange.com where more people may know the answer? Also, the plugin authors might be able to help you.O. Jones