我试图显示每个供应商每年的订单总数
表:销售
表:产品
表:供应商;供应商信息
select year(orderdate) as date_year,count(orderid) as count, OrderID
from products
NATURAL JOIN sales
NATURAL JOIN vendor_info
WHERE products.Vendor_Id=vendor_info.Vendor_Id
group by year(orderdate);
在进行这个查询时,我得到了
查询结果
我哪里错了?最有效的方法是什么?
-- Table structure for table `products`
--
CREATE TABLE IF NOT EXISTS `products` (
`Product_id` varchar(255) NOT NULL,
`OrderId` int(11) NOT NULL,
`Manufacture_Date` date DEFAULT NULL,
`Raw_Material` varchar(255) DEFAULT NULL,
`Vendor_Id` int(11) DEFAULT NULL,
PRIMARY KEY (`Product_id`),
KEY `OrderId` (`OrderId`)
);
-- Table structure for table `sales`
--
CREATE TABLE IF NOT EXISTS `sales` (
`OrderID` int(11) NOT NULL AUTO_INCREMENT,
`OrderDate` date DEFAULT NULL,
`OrderPrice` int(11) DEFAULT NULL,
`OrderQuantity` int(11) DEFAULT NULL,
`CustomerName` varchar(255) DEFAULT NULL,
PRIMARY KEY (`OrderID`)
) AUTO_INCREMENT=10 ;
-- Table structure for table `Vendors`
--
CREATE TABLE IF NOT EXISTS `Vendors` (
`Raw_material` varchar(255) DEFAULT NULL,
`Vendors` varchar(255) DEFAULT NULL,
`Vendor_id` int(11) DEFAULT NULL,
KEY `Vendor_id` (`Vendor_id`)
)
-- Table structure for table `Vendor_info`
--
CREATE TABLE IF NOT EXISTS `Vendor_info` (
`Vendor_id` int(11) DEFAULT NULL,
`Vendor_name` varchar(255) DEFAULT NULL,
KEY `Vendor_id` (`Vendor_id`)
)
这里有些猜测,因为您还没有解释您的需求。
我想你想按年份汇总订单数量。您可以使用比示例更简单的查询来实现这一点,因为您需要的所有数据都在sales
表中。
select year(orderdate) as date_year, count(orderid) as count
from sales
group by year(orderdate);
如果这不能满足您的需求,请编辑您的问题,为我们提供更多详细信息。
如果你想按供应商和年份获得订单数量,你可以使用这样的查询:
select vendor_info.vendor_name,year(sales.orderdate),count(distinct products.orderId)
from vendor_info
join products on vendor_info.vendor_id=productos.vendor_id
join sales on products.orderid=sales.orderid
group by vendor_info.vendor_name,year(sales.orderdate)
在这里,您可以从供应商加入到产品和销售。在这里,你只会得到有销售额的供应商。