我的功能“on”有问题。 这是查询:
Retrieving the names of dog lovers who have performed at least 3 babysitters in apartment type houses
CREATE TABLE DogLover (
DogLoverID INT PRIMARY KEY,
name VARCHAR(50),
DailyWage INT,
phone INT,
city VARCHAR(50));
CREATE TABLE House (
HouseID INT PRIMARY KEY,
HouseType VARCHAR(50),
no_of_dogs INT,
max_cancel_notice INT);
CREATE TABLE DogLoverShift (
DogLoverID INT,
HouseID INT PRIMARY KEY,
StartDate DATE,
EndDate DATE,
FOREIGN KEY (DogLoverID) REFERENCES DogLover(DogLoverID),
FOREIGN KEY (HouseID) REFERENCES House(HouseID));
我尝试的查询是:
SELECT *
FROM DogLoverShift inner join DogLover AS newTable
ON doglover.DogLoverID = doglovershift.DogLoverID
错误:
Error Code: 1054. Unknown column 'doglover.DogLoverID' in 'on clause'
编辑: 在我看到这里所有好的帮助后,我更改了查询:
SELECT *
FROM DogLoverShift inner join DogLover inner join House AS newTable ON newtable.DogLoverID=DogLoverShift.DogLoverID AND newtable.HouseID=house.HouseID;
和错误:
Error Code: 1054. Unknown column 'newTable.DogLoverID' in 'on clause'
编辑 2: (希望最后一次编辑..) 现在我使用这个代码(感谢“Arulkumar”!)
SELECT *
FROM DogLoverShift AS DLS
INNER JOIN DogLover AS DG ON DG.DogLoverID = DLS.DogLoverID
INNER JOIN House AS HS ON HS.HouseID = DLS.HouseID
现在我如何检查:“在公寓类型的房屋中至少担任过 3 名保姆”? 我知道我需要分组并制作 WHERE ,但我不知道如何:-(
最佳答案
我认为问题在于表名newTable
。您可以使用:
SELECT *
FROM DogLoverShift
inner join DogLover AS newTable ON newTable.DogLoverID = DogLoverShift.DogLoverID
或者直接使用表名
SELECT *
FROM DogLoverShift
inner join DogLover ON DogLover.DogLoverID = DogLoverShift.DogLoverID
根据您的评论,要连接三个表,请使用以下查询:
SELECT *
FROM DogLoverShift AS DLS
INNER JOIN DogLover AS DG ON DG.DogLoverID = DLS.DogLoverID
INNER JOIN House AS HS ON HS.HouseID = DLS.HouseID
关于MySQL 错误代码 : 1054 when try "on" and "inner join",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56278631/