2014-11-10 2 views
0

화요일 12시에 무료 (예 : 예약되지 않음) 인 100 개 이상의 강의실 (해당 강의실 코드)을 찾고 싶습니다.Microsoft Access SQL 쿼리 - 특정 결과 제거

룸 테이블에는 rCode & 용량이 있습니다. roomBooking 테이블에는 dayReq, timeReq & roomCode가 있습니다.

SQL 쿼리는 지금까지 내가 = "화요일" dayReq을 포함 결과를 제거 할

SELECT rCode, capacity 
FROM room 
INNER JOIN roomBooking 
ON room.rCode = roomBooking.roomCode 
WHERE capacity >= 100; 

입니다 및 timeReq = "12시 0분 0초"하지만 난 안가 그렇게 할 올바른 연산자를 알고 있어야합니다.

+0

이 사용할 수 http://stackoverflow.com/questions/18886128/can-i-use-not-equal-in-ms-access-find-function 등가 연산자가 아닙니다. 봤어? – Hozikimaru

+0

@SurgeonofDeath. . . 비 동일 연산자는이 질문에 대한 답과는 아무런 관련이 없습니다. –

+0

그녀는 dayReq 및 timeReq에 대한 화요일의 결과를 원하지 않습니다. 나는 그 질문이 지적한 바를 생각했다. "dayReq ="Tuesday "및 timeReq ="12:00:00 "과 관련된 결과를 제거하고 싶지만 올바른 작업자를 알지 못합니다." – Hozikimaru

답변

1

원하는 것을 얻으려면 left join (또는 where 절의 하위 쿼리)이 필요합니다. 아이디어는 객실이 예약 기준과 일치하는 모든 객실을 찾는 것입니다. 그런 다음 일치하지 않는 방을 원합니다.

SELECT room.rCode, room.capacity 
FROM room LEFT JOIN 
    roomBooking 
    ON room.rCode = roomBooking.roomCode AND 
     dayReq = 'Tuesday' AND timeReq = '12:00:00' 
WHERE room.capacity >= 100 AND 
     roomBooking.roomCode IS NULL; 

MS 여러 개의 키가있는 조인을 포함하여 많은 것들이 실제로 이상합니다. 그냥이 상관 하위 쿼리로 수행

SELECT room.rCode, room.capacity 
FROM room 
WHERE NOT EXISTS (SELECT 1 
        FROM roomBooking 
        WHERE room.rCode = roomBooking.roomCode AND 
         dayReq = "Tuesday" AND timeReq = "12:00:00" 
       ) AND 
     room.capacity >= 100; 
+0

그녀는이 값들을 포함하는 결과를 없애고 싶지 않습니까? 이 쿼리는 이러한 변수를 포함하는 결과를 제공하지 않습니까? – Hozikimaru

+0

@SurgeonofDeath . . 특정 시간에 예약이없는 객실을 반환합니다. –

+0

@ GordonLinoff 이것을 시도하면 "JOIN 표현식이 지원되지 않습니다."가 표시됩니다. –