我该如何结合我的两个查询

时间:2015-07-14 20:47:43

标签: mysql sequelpro

这是第一个查询

SELECT DISTINCT u.email, lastorder, datediff(curdate(),lastorder), 
CASE WHEN datediff(curdate(),lastorder)<=29 then "<=29" 
WHEN datediff(curdate(),lastorder)<=43 then "<=43" 
WHEN datediff(curdate(),lastorder)<=60 then "<=60" 
WHEN datediff(curdate(),lastorder)<=92 then "<=92" 
WHEN datediff(curdate(),lastorder)<=100 then "<=100"
else ">100" end as dayssincelastorder
FROM pedidos_onlines as po
LEFT JOIN establecimientos as e ON `po`.`establecimiento_id`= e.id
LEFT JOIN usuarios as u ON po.usuario_id=u.id
LEFT JOIN ciudades as c on c.id=e.ciudad_id
LEFT JOIN (SELECT usuarios.email, MAX(fecha) as lastorder
FROM pedidos_onlines
LEFT JOIN usuarios
ON pedidos_onlines.usuario_id=usuarios.id
group by usuarios.email) lastorder ON u.email=lastorder.email
WHERE (e.nombre or e.ciudad_id IS NOT NULL)and u.email is not null
ORDER BY datediff(curdate(),lastorder) ASC

这是第二个

SELECT usuarios.email, AVG(pedidos_onlines.total), 
CASE WHEN p.nombre like '%colombia%' and AVG(pedidos_onlines.total) <34873 then 'A'
 WHEN p.nombre like '%colombia%' and AVG(pedidos_onlines.total) >= 52309 then 'B'
 WHEN p.nombre like '%colombia%' THEN 'C'
 WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) <41 then 'A'
 WHEN p.nombre like '%peru%' and AVG(pedidos_onlines.total) >= 62 then 'B'
 WHEN p.nombre like '%peru%' THEN 'C'
WHEN p.nombre like '%ecuador%' and AVG(pedidos_onlines.total) <13 then 'A'
 WHEN p.nombre like '%ecuador%' and AVG(pedidos_onlines.total) >= 19 then 'B'
  WHEN p.nombre like '%ecuador%' THEN 'C'
 else ""  
end as Segment, p.nombre as country
FROM pedidos_onlines
LEFT JOIN usuarios ON usuarios.id=pedidos_onlines.usuario_id 
LEFT JOIN ciudades as c on c.id=pedidos_onlines.ciudad_id
LEFT JOIN paises as p on p.id=c.pais_id
WHERE usuarios.email IS NOT NULL
GROUP BY usuarios.email, p.nombre

不太确定如何将它们放在一起,所有的帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

使用UNION - 请参阅https://dev.mysql.com/doc/refman/5.0/en/union.html

确保两个SELECT具有相同的列数。