加入两个查询

时间:2017-01-24 18:41:55

标签: mysql

我有两个问题。

BaseType

`SELECT 
total,from_sale,from_sent,on_sent
FROM deliverability.delivery_count_repo
where add_time >= CURDATE()`

我尝试加入此

但出了点问题。每个派生表都必须有自己的别名错误

2 个答案:

答案 0 :(得分:1)

要将一个结果集连接到另一个结果集,通常最好使用UNION ALL

但是,我怀疑你对SQL如何运作感到困惑。它处理数据的矩形。每个结果集都是这样一个矩形。它有一定数量的列,每个列都显示某种类型的信息。并且,每个结果集都有一定数量的行。结果集的每一行都有与每隔一行相同类型的列。

您问题中的第一个结果集有四列,第二个结果列有三列。试着把它们塞进一个结果集中是没有意义的。

答案 1 :(得分:0)

试试这个( 假设' idCommon'是两个表之间的共同id):

`SELECT 
total,from_sale,from_sent,on_sent
FROM deliverability.delivery_count_repo
INNER JOIN (
`SELECT 
  idCommon,
order_customFields.order_customFields_delivery_method method,
  sum(case `order`.order_status when 'paid' then 1 else 0 end) paid,
  sum(case `order`.order_status when 'later' then 1 else 0 end) later
FROM order_customFields 
  INNER JOIN `order` ON order_customFields.order_id = `order`.order_id
WHERE
  order_customFields.order_customFields_order_date >= date_sub(date_sub(curdate(), interval day(curdate()) - 1 day), interval 1 month) and
      order_customFields.order_customFields_order_date < date_sub(curdate(), interval day(curdate()) - 1 day) 
AND order_customFields.order_customFields_delivery_method is not null
GROUP BY    
   order_customFields.order_customFields_delivery_method `

) as t ON t.idCommon=delivery_count_repo.idCommon -- you must cross id's Common

where add_time >= CURDATE()`