sql - 在三个连接表中计数
问题描述
我有三张桌子。第一个是PrivteOwner
5 列 ( ownerno, fname, lname, address, telno
),第二个是PropertyForRent
10 列 ( propertyno, street, city, postcode, type, rooms, rent, ownerno, staffno, branchno
),第三个是Viewing
4 列 ( clientno, propertyno, viewdate, comment
)。
我想找到没有看房的房产最多的业主。我的代码如下:
SELECT
CONCAT (A.fname, ' ', A.lname) AS OwnerName,
A.ownerno, B.propertyno, B.ownerno
FROM
PrivateOwner AS A
INNER JOIN
PropertyforRent AS B ON A.ownerno = B.ownerno
LEFT JOIN
viewing AS C
SELECT
ownerno, COUNT(ownerno), viewdate
FROM
Max_Property
GROUP BY ownerno
ORDER BY COUNT(ownerno) DESC
WHERE
ROWNUM = 1 and viewdate IS NULL;
此代码是否正常工作?如果是,我们如何有效地编写它?
解决方案
如果您不提供数据定义、数据或您的预期结果,则很难回答问题。
无论如何,根据您的描述,我认为这可能会给您带来您想要的结果。
SELECT
TOP 1
PrivteOwner.ownerno,
PrivteOwner.fname,
PrivteOwner.lname,
COUNT(ViewNumber) AS PropertyNumber
FROM
(
SELECT
PropertyForRent.propertyno AS propertyno
, COUNT(Viewing.propertyno) AS ViewNumber
FROM PropertyForRent
LEFT JOIN Viewing ON Viewing.propertyno = PropertyForRent.propertyno
GROUP BY PropertyForRent.propertyno
) AS NoView
JOIN PropertyForRent ON PropertyForRent.propertyno = NoView.propertyno
JOIN PrivteOwner ON PrivteOwner.ownerno = PropertyForRent.ownerno
WHERE ViewNumber = 0
GROUP BY PrivteOwner.ownerno,
PrivteOwner.fname,
PrivteOwner.lname
ORDER BY PropertyNumber DESC
推荐阅读
- c# - 如何在不安装 .net 的情况下运行 .net 应用程序?
- java - 从现有枚举中生成内部枚举 // 枚举别名
- python - SpeechRecognition 在 Raspberry Pi 上引发 ALSA 错误
- android - 如何强制在外部浏览器中打开应用链接
- mongodb - 如何查找最近检查日期在 2020 年之后的文件?
- javascript - 从 Airports.JSON 查询 Airport Lat 和 long 反应原生
- html - 如何从输入中获取信息并将其放入href
- pine-script - 有没有办法在函数中使用 bgcolor ?
- javascript - Next.js 增量静态重新生成不反映更改而不重新加载页面
- flutter - 例外:坏状态:未来已经完成