连接列名称不同的表

时间:2014-02-17 14:37:43

标签: mysql

我正在使用WP电子商务插件并拥有以下表格

表1 wp_wpsc_cart_contents

|id|quantity|name      |purchaseid|price|custom_message|

|22|1       |black ... |46        |19.45|nickname 1    |
|23|1       |red ...   |47        |19.45|nickname 2    |

表2 wp_wpsc_submited_form_data

|id|log_id|form_id|value        |

|1 |46    |2      |email 1      |
|2 |46    |12     |first name 1 |
|3 |46    |13     |last name 1  |
|4 |47    |2      |email 2      |
|5 |47    |12     |first name 2 |
|6 |47    |13     |last name 2  |

所需表:

|name    |log_id/purchaseid|price|quantity|value                    |

|black ..|46               |19.45|1       |email1, f-name 1, l-name 1|
|red ... |47               |19.45|1       |email2. f-name 2, l-name 2|

我在以下两个查询中取得了有限的成功,但无法确定如何加入表格 - 假设匹配的数据位于不同名称的列中,而且值为'我尝试选择的数据位于不同的行

SELECT * 
FROM wp_wpsc_cart_contents 
WHERE name LIKE '%$term%'
ORDER BY name

SELECT *, value, GROUP_CONCAT(value SEPARATOR ', ') value
FROM wp_wpsc_submited_form_data
GROUP BY log_id
ORDER BY log_id

截图:

wp_wpsc_cart_contents.PNG wp_wpsc_submited_form_data.PNG

2 个答案:

答案 0 :(得分:1)

尝试此查询...

    create table desired_table_name as SELECT w.name,w.log_id, w2.price, w.quantity, 
    w2.value FROM wp_wpsc_cart_contents w inner join wp_wpsc_submited_form_data w2 on 
    w.log_id=w2.purchaseid WHERE w.name LIKE '%$term%'  ORDER BY w.name

答案 1 :(得分:0)

您的第二个查询应该简化一点,以获得您想要的大部分内容:

SELECT log_id, GROUP_CONCAT(value SEPARATOR ', ') value
  FROM wp_wpsc_submited_form_data
 GROUP BY log_id

然后,您可以在其他查​​询中将其用作“表格”:

SELECT c.name, c.purchaseid, c.price, c.quantity, f.value  
  FROM wp_wpsc_cart_contents AS c
  JOIN (SELECT log_id AS purchase_id, GROUP_CONCAT(value SEPARATOR ', ') value
          FROM wp_wpsc_submited_form_data
        GROUP BY log_id) AS f
    ON c.purchase_id = f.purchase_id
 WHERE name LIKE '%$term%'
 ORDER BY name

此外,“提交”还有两个问题。