0

这是第一个查询

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

不太确定如何将它们放在一起,感谢所有帮助

4

1 回答 1

0

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

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

于 2015-07-14T20:50:28.560 回答