【发布时间】:2017-09-30 12:46:42
【问题描述】:
我有一张叫做 ROOM 的桌子。
CONSTRAINT ROOM_PK PRIMARY KEY(BUILDINGNO,ROOMNO),
CONSTRAINT ROOM_FK1 FOREIGN KEY(BUILDINGNO) REFERENCES BUILDING(BUILDINGNO));
BUILDINGNO | ROOMNO | ROOMCAPACITY
-----------+--------+-------------
B1 | R1 | 121
B1 | R2 | 253
B2 | R1 | 275
B2 | R2 | 126
B2 | R3 | 124
B3 | R1 | 256
B3 | R2 | 324
B4 | R1 | 431
B4 | R2 | 345
B4 | R3 | 231
还有一个名为 SESSION 的表。
CONSTRAINT SESSION_PK PRIMARY KEY(SESSIONID),
CONSTRAINT SESSION_FK1 FOREIGN KEY(BUILDINGNO) REFERENCES
BUILDING(BUILDINGNO),
CONSTRAINT SESSION_FK2 FOREIGN KEY(BUILDINGNO,ROOMNO) REFERENCES
ROOM(BUILDINGNO,ROOMNO),
CONSTRAINT SESSION_FK3 FOREIGN KEY(SPEAKERID) REFERENCES SPEAKER(SPEAKERID));
SESSIONID | BUILDINGNO | ROOMNO | SPEAKERID
----------+------------+--------+----------
SS01 | B1 | R1 | S1
SS02 | B2 | R1 | S2
SS03 | B1 | R2 | S2
SS04 | B4 | R2 | S4
SS05 | B3 | R2 | S5
SS06 | B3 | R1 | S5
SS07 | B4 | R2 | S3
SS08 | B1 | R2 | S2
SS09 | B2 | R3 | S4
SS10 | B4 | R1 | S3
我想使用 JOIN 创建一个 SELECT 语句,该语句显示不在 BUILDINGNO 'B2' 中的 SESSION(ID、BUILDINGNO 和 ROOMNO)的详细信息,并且 ROOMCAPACITY 必须 > 180。结果也排除重复值.
我尝试使用语句:
SELECT DISTINCT CONFERENCESESSION.SESSIONID, CONFERENCESESSION.BUILDINGNO, CONFERENCESESSION.ROOMNO
FROM CONFERENCESESSION
INNER JOIN ROOM ON ROOM.ROOMNO=CONFERENCESESSION.ROOMNO
WHERE CONFERENCESESSION.BUILDINGNO != 'B2'
AND ROOM.ROOMCAPACITY >= '180';
但是这不太对...有人可以告诉我如何解决这个问题吗?
【问题讨论】:
-
ROOMCAPACITY的数据类型是什么?你的问题是什么? -
您应该在
BUILDINGNO和ROOMNO列上加入表格。 -
我认为
CONSTRAINT SESSION_FK1 FOREIGN KEY(BUILDINGNO) REFERENCES BUILDING(BUILDINGNO),FK 没有多大用处,因为SESSION_FK2在两个(BUILDINGNO,ROOMNO)列上都有。 -
感谢您的提示!我会做出改变:)
标签: sql database oracle select join