SQL查询获得答案

时间:2018-09-11 12:25:37

标签: sql

我被分配了一个数据库任务,其中涉及第一次使用查询来查找特定结果

table diagram

问题由国家承担

  

“编写一条SQL语句以列出所有已被   由一个或多个客户查看。更准确地说,列出邮政编码,   propertyNo,物业的街道,员工的姓氏   负责此属性,客户的姓氏和查看   日期。首先按邮政编码排序输出,然后按街道排序   (需要截图)。“

我拥有的代码:

SELECT   Viewing.propertyNo, PropertyForRent.street, PropertyForRent.postcode, Staff.lName
FROM Viewing 
  INNER JOIN PropertyForRent ON Viewing.propertyNo = PropertyForRent.propertyNo 
  INNER JOIN PrivateOwner ON PropertyForRent.ownerNo = PrivateOwner.ownerNo 
  INNER JOIN Staff ON PropertyForRent.staffNo = Staff.staffNo 
  INNER JOIN Client ON Viewing.clientNo = Client.clientNo
group by  Viewing.propertyNo, PropertyForRent.street, PropertyForRent.postcode, Staff.lName
having COUNT(viewing.propertyNo)>1

大多数情况下结果是正确的,除了我没有添加client.lastname,因为它使结果进入一个空表。我在使用正确的查询来获取我正在寻找的答案吗?

1 个答案:

答案 0 :(得分:0)

SELECT pfr.PostCode
    ,vw.PropertyNo
    ,pfr.Street
    ,sf.LName
    ,ct.LName
    ,vw.ViewDate
FROM Viewing vw
    JOIN PropertyForRent pfr
        ON vw.PropertyNo = pfr.PropertyNo
    JOIN PrivateOwner po
        ON vw.OwnerNo = po.OwnerNo
    JOIN Staff sf
        ON pfr.StaffNo = sf.StaffNo
    JOIN Client ct
        ON vw.ClientNo = ct.ClientNo
ORDER BY pfr.PostCode
    ,pfr.Street

必须重新阅读该问题-很容易被误认为“一个以上的客户”。一个或多个客户意味着您将包括所有视图。特别是因为他们希望您包括客户的信息和查看日期。

删除您的“ HAVING”语句,并添加客户的姓氏。我会保留分组依据或选择不同的分组,因此它只会返回唯一的记录。你应该很好!