尝试改变你的
WHERE branchID = (选择....
到
WHERE branchID IN (select....
相等性测试通常在两列之间进行。您正在尝试将一列中的相等性应用于 SELECT 语句...在您测试合格人员的地方,IN 是正确的。
此外,这可以用 JOIN 来编写,例如
SELECT
bfr.boatId,
bfr.address,
bfr.city,
bfr.postcode,
bfr.type,
bfr.rooms,
bfr.price
FROM
BoatsForRent bfr
JOIN staff s
on bfr.staffID = s.staffID
JOIN Branch b
on s.branchID = b.branchID
AND b.address LIKE '21 Harbour Road%'
评论反馈...
由于上述方法不起作用,请反向构建查询...一次一步,并申请任何未来的查询。将它们分解成更小的部分,直到找到丢失/不匹配元素的罪魁祸首。
select
b.branchID
from
Branch b
where
b.address LIKE '21 Harbour Road%'
如果失败了,是不是 type-o,还是应该是“Rd”与“Road”、拼写、间距、大写/小写?一个已解决,现在检查该办公室的工作人员
select
b.branchID,
s.staffID
from
Branch b
JOIN staff s
on b.branchID = s.branchID
where
b.address LIKE '21 Harbour Road%'
如果这没有返回任何记录,则没有列出的与相关分支机构关联的员工。如果没有人在分行列出,它显然不会返回出租船只的记录。现在,添加要出租的船...
select
b.branchID,
s.staffID,
bfr.boatId,
bfr.address,
bfr.city,
bfr.postcode,
bfr.type,
bfr.rooms,
bfr.price
from
Branch b
JOIN staff s
on b.branchID = s.branchID
JOIN BoatsForRent bfr
on s.staffID = bfr.staffID
where
b.address LIKE '21 Harbour Road%'
如果这仍然失败,则删除 WHERE 子句并租用所有船只,然后只需添加一个
ORDER BY b.address
看看所有的小船都在哪里关联...有时在 SQL 中年轻时超载会导致问题...有时需要缓慢的步骤。
评论反馈。
通过查看您修改后的帖子,我现在看到您的地址包括“朴茨茅斯”,因此您的查询将失败,因为
address = '21 Harbour Road'
和
不一样
address = '21 Harbour Road, Portsmouth'
我已经改成
address LIKE '21 Harbour Road%'
“%”就像一个通配符,所以只要地址以“21 Harbour Road”开头即可。