首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL错误代码: 1054当尝试"on“和”内部连接“时

MySQL错误代码: 1054当尝试"on“和”内部连接“时
EN

Stack Overflow用户
提问于 2019-05-23 15:33:32
回答 2查看 245关注 0票数 0

我对func "on“有意见。这是一个查询:

检索在公寓式房屋中至少有3名保姆的爱犬者的姓名。

代码语言:javascript
运行
复制
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));

我尝试的查询是:

代码语言:javascript
运行
复制
SELECT *
FROM DogLoverShift inner join DogLover AS newTable
ON doglover.DogLoverID = doglovershift.DogLoverID

错误:

错误代码: 1054。'on子句‘中未知列'doglover.DogLoverID’

编辑:在我看到这里所有的好帮助之后,我更改了查询:

代码语言:javascript
运行
复制
SELECT *
FROM DogLoverShift inner join DogLover inner join House AS newTable ON newtable.DogLoverID=DogLoverShift.DogLoverID AND newtable.HouseID=house.HouseID;

而错误是:

错误代码: 1054。'on子句‘中未知列'newTable.DogLoverID’

编辑2: (希望最后一次编辑。)现在我使用这个代码( thansk到'Arulkumar‘!)

代码语言:javascript
运行
复制
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名保姆”?我知道我需要分组,并在哪里,但我不知道如何:

EN

回答 2

Stack Overflow用户

发布于 2019-05-23 15:37:11

您当前的语法已关闭,因为一旦将DogLover表别名为newTable,您就失去了在ON子句中再次引用DogLover的能力。但是,当前的查询与您需要的内容相差甚远,因此这里有一个正确的方法来处理您的查询:

代码语言:javascript
运行
复制
SELECT
    dl.name
FROM DogLover dl
INNER JOIN DogLoverShift dls
    ON dl.DogLoverID = dls.DogLoverID
INNER JOIN House h
    ON dls.HouseID = h.HouseID
GROUP BY
    dl.name
HAVING
    SUM(h.HouseType = 'Apartment') >= 3;
票数 0
EN

Stack Overflow用户

发布于 2019-05-23 15:40:00

我认为表名newTable的问题。您可以使用:

代码语言:javascript
运行
复制
SELECT *
FROM DogLoverShift 
inner join DogLover AS newTable ON newTable.DogLoverID = DogLoverShift.DogLoverID

或直接使用表名。

代码语言:javascript
运行
复制
SELECT *
FROM DogLoverShift 
inner join DogLover ON DogLover.DogLoverID = DogLoverShift.DogLoverID

根据您的注释,要连接三个表,请使用以下查询:

代码语言:javascript
运行
复制
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 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56278631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档