Mysql 连接两个查询
我有两个问题Mysql 连接两个查询,mysql,Mysql,我有两个问题 `SELECT total,from_sale,from_sent,on_sent FROM deliverability.delivery_count_repo where add_time >= CURDATE()` 及 我试着加入这个 但是出了点问题。每个派生表都必须有自己的别名错误才能将一个结果集连接到另一个结果集,通常最好使用UNION ALL 但是,我怀疑您对SQL的工作原理感到困惑。它处理矩形数据。每个结果集都是这样一个矩形。它有一定数量的列,每个列显示特定
`SELECT
total,from_sale,from_sent,on_sent
FROM deliverability.delivery_count_repo
where add_time >= CURDATE()`
及
我试着加入这个
但是出了点问题。每个派生表都必须有自己的别名错误才能将一个结果集连接到另一个结果集,通常最好使用UNION ALL 但是,我怀疑您对SQL的工作原理感到困惑。它处理矩形数据。每个结果集都是这样一个矩形。它有一定数量的列,每个列显示特定类型的信息。而且,每个结果集都有一定数量的行。结果集的每一行都具有与其他每一行相同类型的列 问题中的第一个结果集有四列,第二个结果集有三列。尝试将这些结果塞进一个结果集中没有什么意义。试试这个 假设“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()`
您真正想做什么?@Michaelalexandero第一次查询的结果是5行,第二次查询的结果是3行。我想在一个查询中最终得到8行使用联接要求两个查询具有相同的列计数。第一个查询有4列,第二个查询有3列。这是行不通的。
`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()`