Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

How to select records from another table with count of the beds available

Hi,

I am developing an Application with Oracle APEX under Oracle 19c. It is an application that allows to book a room under certains conditions.

I would like to display the records of the available rooms for a place over a certain period (ARRIVAL_DATE and DEPARTURE_DATE). I have three tables. The table ME_VOLUNTEER with the dates, and the status. The status should be “Confirmed” to allow to book a room. The table ME_VOLUNTEERS(with ARRIVAL_DATE and DEPARTURE_DATE):

CREATE TABLE "ME_VOLUNTEERS" 
  (    "ID" NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  NOT NULL ENABLE, 
    "NAME" VARCHAR2(100), 
    "COMMENTS" VARCHAR2(32767), 
    "VOLUNTEER_TYPE" VARCHAR2(50), 
    "STATUS" VARCHAR2(50), 
    "ARRIVAL_DATE" DATE, 
    "DEPARTURE_DATE" DATE, 
    "PLACE" VARCHAR2(50), 
    "DRIVES_" VARCHAR2(128), 
    "EMAIL" VARCHAR2(128), 
    "PHONE_NUMBER" VARCHAR2(128), 
    "COUNTRY" VARCHAR2(128), 
    "DATE_BIRTH" DATE, 
    "GENDER" VARCHAR2(128), 
    "GRADUATION_DATE" DATE, 
    "FLIGHT_DETAILS" VARCHAR2(512), 
    "AGREEMENT_SOCIAL_MEDIA" VARCHAR2(128), 
    "CREATION_DATE" DATE, 
     PRIMARY KEY ("ID")
 USING INDEX  ENABLE
  ) ;

It contains these data:

INSERT INTO E_VOLUNTEERS
(ID,NAME,COMMENTS,VOLUNTEER_TYPE,STATUS,ARRIVAL_DATE,DEPARTURE_DATE,PLACE,DRIVES_,EMAIL,PHONE_NUMBER,COUNTRY,DATE_BIRTH,GENDER,GRADUATION_DATE,FLIGHT_DETAILS,AGREEMENT_SOCIAL_MEDIA,CREATION_DATE) VALUES (1,'Name 1','Vol & Health Ed Coordinator','Coordinator','Confirmed','2026-05-01','2026-06-07','THESSALONIKI','Yes',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
(2,'Name 2','Medical Coordinator','Coordinator','Confirmed','2026-04-01','2026-31-03','THESSALONIKI','Yes',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
(3,'Name 3','Field coordinator','Coordinator','Unconfirmed','2026-23-02','2026-08-03','THESSALONIKI','Yes',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
(4,'Name 4','reception/ coms/ logistics','Non-Medical Support','Confirmed','2025-02-12','2026-02-04','THESSALONIKI','Yes',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
(5,'Name 5','senior doctor','Senior Doctor (> 3y*)','Unconfirmed','2026-02-02','2026-02-03','THESSALONIKI','No',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
(6,'Name 6','junior doctor + health ed','Junior Doctor','Confirmed','2026-21-01','2026-30-04','THESSALONIKI','No',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL), 
(7,'Name 7','senior doctor','Senior Doctor (> 3y*)','Confirmed','2026-03-04','2026-23-04','THESSALONIKI','Yes',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

I have the table ME_PLACES:

 CREATE TABLE "ME_PLACES" 
  (    "ID" NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  NOT NULL ENABLE, 
    "NAME_PLACE" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
    "ADDRESS" VARCHAR2(512 CHAR), 
    "COMMENTS" VARCHAR2(512 CHAR), 
     CONSTRAINT "ME_PLACES_PK" PRIMARY KEY ("ID")
 USING INDEX  ENABLE, 
     CONSTRAINT "ME_PLACES_CON" UNIQUE ("NAME_PLACE")
 USING INDEX  ENABLE
  ) ;

It contains these data:

INSERT INTO ME_PLACES (ID,NAME_PLACE,ADDRESS,COMMENTS) VALUES (3,'REMOTE',NULL,NULL);
INSERT INTO ME_PLACES (ID,NAME_PLACE,ADDRESS,COMMENTS) VALUES (1,'THESSALONIKI',Greece,NULL);

There is the table ME_ROOM_CALENDAR:

  CREATE TABLE "ME_ROOM_CALENDAR" 
  (    "ID" NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  NOT NULL ENABLE, 
    "PLACE" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
    "ROOM_NAME" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
    "ARRIVAL_DATE" DATE NOT NULL ENABLE, 
    "DEPARTURE_DATE" DATE NOT NULL ENABLE, 
    "BOOKED__FOR__VOLUNTEER" VARCHAR2(128), 
     CONSTRAINT "ME_ROOM_CALENDAR_PK" PRIMARY KEY ("ID")
 USING INDEX  ENABLE
  ) ;

It contains these data:

INSERT INTO ME_ROOM_CALENDAR (ID,PLACE,ROOM_NAME,ARRIVAL_DATE,DEPARTURE_DATE,BOOKED__FOR__VOLUNTEER) VALUES (22,'THESSALONIKI','Room 2','2026-01-03','2026-30-07','Name 5');

There is the table ME_ROOM (it contains the name of the room, the name of the place qhere it is located, and the number of beds available for each room:

  CREATE TABLE "ME_ROOM" 
  (    "ID" NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER  NOCYCLE  NOKEEP  NOSCALE  NOT NULL ENABLE, 
    "NAME_ROOM" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
    "PLACE" VARCHAR2(128 CHAR) NOT NULL ENABLE, 
    "NUMBER_BEDS" NUMBER NOT NULL ENABLE, 
    "ADRESS" VARCHAR2(512 CHAR), 
     CONSTRAINT "ME_ROOM_PK" PRIMARY KEY ("ID")
 USING INDEX  ENABLE
  ) ;

I would like to display the records with the available rooms between ARRIVAL_DATE and DEPARTURE_DATE at a certain PLACE with the number of beds remaining (not occupied). The status of the Volunteers (in the table ME_VOULUNTEERS) should be “Confirmed”. The report would show something like that :

Headers of the report:
“Room” “Beds remainings”

Data of the report for example:
“Room 3” “2”
“Room 2” “1”

Best regards.

This post has been answered by GhanaApexDeveloper on Mar 8 2026
Jump to Answer
Comments
Post Details
Added 6 days ago
8 comments
133 views