[英]Zero rows being returned, despite SQL Query
我試圖顯示一些包含一些汽車細節的表,即使它們不受歡迎。 在我的例子中,沒有人喜歡VW Golf
但我仍然希望在下表中顯示詳細信息:
carID description model name description avgLikes
4 BMW Rules VW GERMANY HatchBack 0.0
這是我的數據庫架構:
CREATE TABLE IF NOT EXISTS Users(
userID INT NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
forename VARCHAR(50) NOT NULL,
surname VARCHAR(50) NOT NULL,
PRIMARY KEY (userID)
);
CREATE TABLE IF NOT EXISTS CarType(
carTypeID INT NOT NULL AUTO_INCREMENT,
description VARCHAR(80),
PRIMARY KEY (carTypeID)
);
CREATE TABLE IF NOT EXISTS Country(
countryID INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100),
PRIMARY KEY (countryID)
);
CREATE TABLE IF NOT EXISTS Cars(
carID INT NOT NULL AUTO_INCREMENT,
carTypeID INT NOT NULL,
countryID INT NOT NULL,
description VARCHAR(100) NOT NULL,
make VARCHAR(100) NOT NULL,
model VARCHAR(100),
FOREIGN KEY (carTypeID) REFERENCES CarType(carTypeID),
FOREIGN KEY (countryID) REFERENCES Country(countryID),
PRIMARY KEY (carID)
);
CREATE TABLE IF NOT EXISTS Likes(
userID INT NOT NULL,
carID INT NOT NULL,
likes DOUBLE NOT NULL,
FOREIGN KEY (userID) REFERENCES Users(userID),
FOREIGN KEY (carID) REFERENCES Cars(carID)
);
CREATE TABLE IF NOT EXISTS Sold(
userID INT NOT NULL,
carID INT NOT NULL,
FOREIGN KEY (userID) REFERENCES Users(userID),
FOREIGN KEY (carID) REFERENCES Cars(carID)
);
INSERT INTO Users VALUES
(NULL, "micheal", "Micheal", "Sco"),
(NULL, "bensco", "Ben", "Sco"),
(NULL, "shanemill", "Shane", "Miller");
INSERT INTO CarType VALUES
(NULL, "Saloon"),
(NULL, "HatchBack"),
(NULL, "Low Rider");
INSERT INTO Country VALUES
(NULL, "UK"),
(NULL, "USA"),
(NULL, "JAPAN"),
(NULL, "GERMANY");
INSERT INTO Cars VALUES
(NULL, 1, 2, "Ford Mustang lovers", "Mustang", "Ford"),
(NULL, 2, 3, "Drift Kings", "Skyline", "Nissan"),
(NULL, 3, 1, "British classic", "Cooper", "Mini"),
(NULL, 2, 4, "BMW Rules", "Golf", "VW");
INSERT INTO Likes VALUES
(1, 1, 3),
(1, 2, 2),
(2, 2, 5),
(2, 1, 7),
(2, 1, 1),
(2, 1, 2);
INSERT INTO Sold VALUES
(1, 2),
(1, 3),
(1, 1),
(2, 2),
(2, 3),
(3, 1),
(3, 3);
這是我的SQL Query
:
SELECT c.carID, c.description, c.model, cy.name, ct.description,
l.avgLikes
FROM Cars c INNER JOIN
Country cy
ON c.countryID = cy.countryID AND cy.name = "Germany" INNER JOIN
CarType ct
ON c.carTypeID = ct.carTypeID LEFT JOIN
(SELECT l.carId, AVG(Likes) as avgLikes
FROM Likes l
GROUP BY l.CarId
) l
ON c.carID = l.carID
我的localhost
phpmyadmin
服務器中沒有返回任何內容。 基本上,因為沒有關於這輛德國汽車的存儲沒有計算和返回
任何幫助將非常感激
謝謝
您可以平均使用COALESCE
- 換句話說,如果在您的平均查詢中找不到結果,您將改為顯示0.00而不是NULL,因為COALESCE
將轉換為第一個非null參數。
我在本地復制了您的數據庫,並使用所有國家/地區字符串進行了測試,並使用以
SELECT c.carID, c.description, c.model, cy.name, ct.description,
COALESCE(l.avgLikes,'0.00') AS 'avglikes'
FROM Cars c
INNER JOIN Country cy ON c.countryID = cy.countryID AND cy.name = "Germany"
INNER JOIN CarType ct ON c.carTypeID = ct.carTypeID
LEFT JOIN
(SELECT l.carId, AVG(Likes) as avgLikes
FROM Likes l
GROUP BY l.CarId
) l
ON c.carID = l.carID
簡單,但希望成功的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.