我在两个表上有此查询,导致(附有图像)

    SELECT vcc.name, vcc.quantity, vcc.custom_message, vfd.value
FROM vxu_4_wpsc_cart_contents AS vcc
INNER JOIN vxu_4_wpsc_submited_form_data AS vfd ON vcc.purchaseid = vfd.log_id
WHERE vfd.form_id
IN ( 2, 9 )


我想a)删除重复数据,b)在同一行中有第二个“值”条目,因此我得到“名称”“数量” custom_message“值1(全名)”“值2(电子邮件)”一排。
我认为这涉及多个表别名和多个联接,但是没有头脑去弄清楚!我已经尝试过-老实!

the two tables plus result

最佳答案

只需再次连接第二张表,使用完全form_id匹配而不是IN并将其移到ON子句。

SELECT vcc.name, vcc.quantity, vcc.custom_message, vfd1.value AS full_name, vfd2.value as email
FROM vxu_4_wpsc_cart_contents AS vcc
INNER JOIN vxu_4_wpsc_submited_form_data AS vfd1 ON vcc.purchaseid = vfd1.log_id AND vfd1.form_id = 2
INNER JOIN vxu_4_wpsc_submited_form_data AS vfd2 ON vcc.purchaseid = vfd2.log_id AND vfd2.form_id = 9


另外,如果可能未指定全名或电子邮件(不存在form_id = 2或form_id = 9的行),但结果仍然需要该数据,请考虑使用左联接。

关于mysql - 多个联接的多个别名?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34382793/

10-11 02:26