我是SQL新手,我正在学习内部联接。但是,当我运行查询时,我收到的输出数量超出了我的预期。
SELECT pfr.pno AS 'Property Number',
pfr.street,
pfr.rooms,
pfr.rent,
CONCAT(o.fname, ' ', o.lname) AS 'Owner Name',
CONCAT(s.fname,' ',s.lname) AS 'Staff Name',
v.date,
v.comment
From property_for_rent AS pfr
INNER JOIN owner AS o
ON pfr.ono = o.ono
INNER JOIN staff AS s
ON pfr.sno = s.sno
INNER JOIN viewing AS v
ON pfr.pno = v.pno
WHERE pfr.pno = 'PG4';
我附上了输出的截图。我希望这是足够的信息!
答案 0 :(得分:1)
当你加入两张牌桌时,如果你没有1:1的关系,就会发生这种情况。
例如,您在"查看"中有两条记录。 table,所以即使只有一个属性,也必须显示两行。
如果想要单个属性结果,则需要在逻辑上聚合查看表,例如通过获取属性的最新查看。
答案 1 :(得分:0)
我不会考虑这些重复的行。如果您查看PG4交易的日期列,您会注意到日期不同。这是两个不同的交易,不被视为重复。如果您只想返回特定列的一条记录,可以考虑使用Distinct子句。希望这可以帮助!