gpt4 book ai didi

php - SQL 查询按列中的 null 对分组连接表进行计数

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:54 25 4
gpt4 key购买 nike

我有 3 个表 productsstock 以及 purchases

Puchases 有一个 primary keypurchaseID

我的 products 表有一个 primary key productID,然后是包含产品详细信息的列。

我的 stock 表有一个 primary keyframenumber 一个 foreign keyproductIDpurchaseID 的另一个 foriegn key

并非所有产品都有库存。

我想通过 productID join prodcuts 和 stock 表,并在最后一行计算purchaseID 列中的空值,表示我有多少库存。

我已经尝试了很多查询,但似乎总是只能得出stock 表中的条目总数或子查询 而不是左连接正确。

我尝试过的一些东西

SELECT * , COUNT( * ) AS Count
FROM Products
LEFT JOIN Stock ON Products.productID = Stock.productID
WHERE Stock.OrderID IS NULL AND Stock.framenumber IS NOT NULL
GROUP BY Products.productID

只是给我按产品 ID 分组的库存中所有元素的数量,并没有加入所有产品

架构

CREATE TABLE BikeStock (

FrameNumber VARCHAR(10) PRIMARY KEY,
BikeCode VARCHAR(40),
OrderID INT,
FOREIGN KEY (BikeCode) REFERENCES Bike(BikeCode),
FOREIGN KEY (OrderID) REFERENCES Purchase(OrderID)
);

CREATE TABLE Bike (

BikeCode VARCHAR (40) PRIMARY KEY,
Manufacturer VARCHAR (30),
Model VARCHAR (30),
SubType VARCHAR (30),
Year SMALLINT,
FrameMaterial VARCHAR (20),
Description TEXT,
Gender VARCHAR (6),
Type VARCHAR (20),
Price DECIMAL (11,2)
);


CREATE TABLE Purchase (

DateOfPurchase DATETIME,
OrderID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(OrderID),
CustomerID INT,
FOREIGN KEY (CustomerID) REFERENCES Customer(CustomerID)

);

最佳答案

SELECT Products.productID , SUM( 
case
when (Stock.OrderID IS NULL AND Stock.framenumber IS NOT NULL)
then 1
else 0
end case
) AS Count
FROM Products
LEFT JOIN Stock ON Products.productID = Stock.productID
GROUP BY Products.productID

关于php - SQL 查询按列中的 null 对分组连接表进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13840521/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com