我正在尝试显示完全否。每个供应商每年的订单数量?

  • 本文关键字:供应商 单数量 显示 mysql sql
  • 更新时间 :
  • 英文 :


我试图显示每个供应商每年的订单总数

表:销售

表:产品

表:供应商;供应商信息

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)

在这里,您可以从供应商加入到产品和销售。在这里,你只会得到有销售额的供应商。

最新更新