Mysql与嵌套选择连接

时间:2013-10-19 01:15:13

标签: mysql sql select join

我正在尝试使用此sql获取每个,每月和每天每个卖家的所有订单总数。我仍然围绕着连接,但据我所知,我认为这应该可行

SELECT sellers.username, sellers.registerDate, sellers.sellerid,
orders.orderPrice, orders.orderDate, orders.sellerid,
count(orders.orderPrice) AS products, SUM( orders.orderPrice ) AS total,
FROM  `sellers` 
JOIN
`orders`,
(SELECT SUM( orders.orderPrice ) FROM  `orders` WHERE YEAR( orderDate ) = YEAR( CURDATE( ) ) ) AS year,
(SELECT SUM( orders.orderPrice ) FROM  `orders` WHERE MONTH( orderDate ) = MONTH( CURDATE( ) ) ) AS month,
(SELECT SUM( orders.orderPrice ) FROM  `orders` WHERE orderDate = CURDATE() ) AS day
ON orders.sellerid = sellers.sellerid
GROUP BY sellers.username
HAVING total > 0
ORDER BY total desc
LIMIT 0 , 4

但它给了我一个错误(#1064 - 在第9行'ON orders.sellerid = sellers.sellerid GROUP BY sellers.username HAVING'附近)

1 个答案:

答案 0 :(得分:0)

You need to set ON clause on every join table not only the lastone. 

此致

JOIN
    `orders` ON ??? = ???,
    (SELECT SUM( orders.orderPrice ) FROM  `orders` WHERE YEAR( orderDate ) = YEAR(   CURDATE( ) ) ) AS year ON orders.sellerid = sellers.sellerid,
    (SELECT SUM( orders.orderPrice ) FROM  `orders` WHERE MONTH( orderDate ) = MONTH( CURDATE( ) ) ) AS month ON orders.sellerid = sellers.sellerid,
    (SELECT SUM( orders.orderPrice ) FROM  `orders` WHERE orderDate = CURDATE() ) AS day 
         ON orders.sellerid = sellers.sellerid
相关问题