특정 날짜에 인벤토리에 각 항목이 얼마나 남아 있는지 표시하는 목록을 만드는 쿼리를 작성하려고합니다.
다음 테이블이 있습니다.
tblTypes
- Types
tblRooms
- Room
- Type
tblDates
- Date
- Type
다음과 같은 쿼리가 있습니다.
--qryRoomInventory--
SELECT
tblTypes.Type, Count(tblRooms.Type) AS Inventory
FROM
tblTypes
INNER JOIN
tblRooms ON tblTypes.Type = tblRooms.Type
GROUP BY
tblTypes.Type;
--qryBooked--
SELECT
tblDates.Type, tblDates.Date, Count(tblDates.Type) AS Booked,
[Inventory]-[Booked] AS Opened
FROM
(tblTypes
INNER JOIN
tblDates ON tblTypes.Type = tblDates.Type)
INNER JOIN
qryRoomInventory ON tblTypes.Type = qryRoomInventory.Type
GROUP BY
tblDates.Type, tblDates.Date, qryRoomInventory.Inventory
HAVING
(((tblDates.Date) = Date()));
문제는 안에있는 유형 만 표시 tblDates
하고 나머지는 잘라낸 다는 것입니다. 전체 유형 목록을 표시하고 목록에없는 경우 0 개가 예약되었다고 가정하려면 어떻게해야합니까?
당신은 이것을 LEFT JOIN
위해 사용합니다 . 예를 들어 첫 번째 쿼리는 다음과 같습니다.
SELECT tblTypes.Type, Count(tblRooms.Type) AS Inventory
FROM tblTypes LEFT JOIN
tblRooms
ON tblTypes.Type = tblRooms.Type
GROUP BY tblTypes.Type;
INNER JOIN
두 번째 쿼리와 같은 s 가 여러 개인 경우 모두 LEFT JOIN
.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다