Sql 加入新表时出现不正确的数据
我不明白这里发生了什么,我有一段代码可以像预期的那样完美地工作。然而,一旦我用另一个表修改了它,我就开始得到不正确的额外数据Sql 加入新表时出现不正确的数据,sql,oracle,Sql,Oracle,我不明白这里发生了什么,我有一段代码可以像预期的那样完美地工作。然而,一旦我用另一个表修改了它,我就开始得到不正确的额外数据 SELECT g.Name , b.roomNo , b.From , b.To FROM Booking b JOIN Guest g ON g.No = b.gNo WHERE b.hNo = 1 AND b.From <= '10-01' AND (b.To IS NULL O
SELECT g.Name
, b.roomNo
, b.From
, b.To
FROM Booking b
JOIN Guest g ON g.No = b.gNo
WHERE b.hNo = 1 AND b.From <= '10-01'
AND (b.To IS NULL OR b.To >= '10-01');
在我将其修改为:
SELECT g.Name
, b.roomNo
, r.price --<-- new
, b.From
, b.To
FROM Booking b
JOIN Guest g ON g.No = b.gNo
JOIN Room r ON r.roomNo = b.roomNo --<-- new
WHERE b.hNo = 1 AND b.From <= '10-01'
AND (b.To IS NULL OR b.To >= '10-01');
给出了正确的10个结果:
ROOMNO
------
7
5
5
5
1
3
4
7
2
3
然而
SELECT b.roomNo
FROM Booking b
JOIN Room r ON b.roomNo = r.roomNo
WHERE b.hNo = 1;
给出了80个结果……在我不想知道多少小时后,我找到了我自己的答案,这太简单了
JOIN Room r ON r.roomNo = b.roomNo AND b.hotelNo = r.hotelNo
这只是代码的一个小附加,因为它不知道hotelNo字段也应该被加入
SELECT g.Name
, b.roomNo
, r.price
, b.From
, b.To
FROM Booking b
JOIN Guest g ON g.No = b.gNo
JOIN Room r ON r.roomNo = b.roomNo AND b.hotelNo = r.hotelNo --<-- new
WHERE b.hNo = 1 AND b.From <= '10-01'
AND (b.To IS NULL OR b.To >= '10-01');
选择g.名称
,b.房间号
,r.price
,b.来自
,b.To
预订b
在g.No=b.gNo上加入来宾g
在r.roomNo=b.roomNo和b.hotelNo=r.hotelNo上加入房间r——可能在房间中重复房间号?否则,您可以为显示问题的所有表添加一些示例数据吗?不,我也验证了这一点。。每个房间只出现一次你自己解决问题的集合。请自行接受您的答案(点击勾号),以便将此问题标记为“已解决”。这对未来的游客很重要。
SELECT b.roomNo
FROM Booking b
JOIN Room r ON b.roomNo = r.roomNo
WHERE b.hNo = 1;
JOIN Room r ON r.roomNo = b.roomNo AND b.hotelNo = r.hotelNo
SELECT g.Name
, b.roomNo
, r.price
, b.From
, b.To
FROM Booking b
JOIN Guest g ON g.No = b.gNo
JOIN Room r ON r.roomNo = b.roomNo AND b.hotelNo = r.hotelNo --<-- new
WHERE b.hNo = 1 AND b.From <= '10-01'
AND (b.To IS NULL OR b.To >= '10-01');