と の3 つのテーブルがproducts
あります。stock
purchases
Puchases
primary key
の_ purchaseID
_
私products
のテーブルには、製品の詳細を含む列がありますprimary key
。productID
私stock
のテーブルにはのprimary key
とframenumber
のforeign key
がproductID
あります。foriegn key
purchaseID
すべての商品に在庫があるわけではありません。
在庫表をで作成しjoin
、列の null 値の量をカウントする行を最後に配置します。これは、在庫の数を表します。prodcuts
productID
purchaseID
私はたくさん試しましたが、常にテーブルqueries
内のエントリの合計量が表示されるか、正しく結合されていないようです。stock
subqueries
私が試したいくつかのこと
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
productID でグループ化された在庫のすべてのオブジェクトの数を表示するだけで、すべての製品に参加するわけではありません
スキーマ
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)
);