我正在尝试学习 sqlite 查询但不断收到此错误
I'm trying to learn sqlite queries but keep getting this error
我正在尝试使用 sqliteonline.com 编写一个 SQLite 查询,它可以:
找出在每个 class 所在的每个房间任教的教职员工的姓名
受教了。
关系如下:
这是我的:
SELECT DISTINCT F.fname
FROM Faculty F
WHERE NOT EXISTS (( SELECT *
FROM Class C )
EXCEPT
(SELECT C1.room
FROM Class C1
WHERE C1.fid = F.fid ))
AND 这是我得到的错误:
我仔细检查了一下,括号是平衡的。所以我对从这里去哪里感到困惑。
问题是select *
。只是 select 两边的同一列 except
:
SELECT F.fname
FROM Faculty F
WHERE NOT EXISTS (SELECT c.Room
FROM Class C
EXCEPT
SELECT C1.room
FROM Class C1
WHERE C1.fid = F.fid
)
注意:您可能 select 不仅仅是名字。 Faculty
中的行应该是唯一的。
您必须删除包含每个子查询的括号和 select 每个子查询中的相同列(我猜只需要 room
):
SELECT F.fname
FROM Faculty F
WHERE NOT EXISTS ( SELECT room FROM Class C
EXCEPT
SELECT C1.room
FROM Class C1
WHERE C1.fid = F.fid
)
另外 DISTINCT
并不是真正需要的,因为你 selecting 独一无二(我相信)来自 Faculty
.
的 fname
这看起来像是一个关系除法问题。我会用一种规范的方法来解决这个问题,使用连接和聚合:
select fname
from faculty f
inner join class c on c.fid = f.fid
group by fname
having count(distinct c.room) = (select count(distinct room) from class)
我正在尝试使用 sqliteonline.com 编写一个 SQLite 查询,它可以:
找出在每个 class 所在的每个房间任教的教职员工的姓名 受教了。
关系如下:
这是我的:
SELECT DISTINCT F.fname
FROM Faculty F
WHERE NOT EXISTS (( SELECT *
FROM Class C )
EXCEPT
(SELECT C1.room
FROM Class C1
WHERE C1.fid = F.fid ))
AND 这是我得到的错误:
我仔细检查了一下,括号是平衡的。所以我对从这里去哪里感到困惑。
问题是select *
。只是 select 两边的同一列 except
:
SELECT F.fname
FROM Faculty F
WHERE NOT EXISTS (SELECT c.Room
FROM Class C
EXCEPT
SELECT C1.room
FROM Class C1
WHERE C1.fid = F.fid
)
注意:您可能 select 不仅仅是名字。 Faculty
中的行应该是唯一的。
您必须删除包含每个子查询的括号和 select 每个子查询中的相同列(我猜只需要 room
):
SELECT F.fname
FROM Faculty F
WHERE NOT EXISTS ( SELECT room FROM Class C
EXCEPT
SELECT C1.room
FROM Class C1
WHERE C1.fid = F.fid
)
另外 DISTINCT
并不是真正需要的,因为你 selecting 独一无二(我相信)来自 Faculty
.
fname
这看起来像是一个关系除法问题。我会用一种规范的方法来解决这个问题,使用连接和聚合:
select fname
from faculty f
inner join class c on c.fid = f.fid
group by fname
having count(distinct c.room) = (select count(distinct room) from class)