我在两个表上有此查询,导致(附有图像)
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/