logo



Problema 17

Evidența camerelor unui hotel se realizează prin intermediul unei baze de date ce cuprinde tabelul Camere cu structura Nr_camera (T,4), Nr_locuri (N,1), Status (T,20), Categ_VIP (Y/N), Data_eliberarii (D). Numărul format cu primele două caractere ale câmpului Nr_camera reprezintă etajul la care este plasată camera respectivă.
Cerinţe:
a) Creaţi structura tabelului Camere;
b) Introduceți următoarele înregistrări în tabel:

Nr_camera

Nr_locuri

Status

Categ_VIP

Data_eliberarii

0301

2

Ocupata

N

22.mai.2015

0302

4

Rezervata

Y

03.sep.2016

0422

1

Libera

Y

 

1307

2

Libera

N

 

1204

3

Ocupata

N

12.iun.2015

0707

2

Ocupata

Y

04.aug.2015

c) Afişaţi camerele ocupate;
d) Folosind o interogare (secvenţă de instrucţiuni), afişaţi camerele libere din hotel situate la nivele superioare (etajul la care este situată camera este mai mare decât 10).

Rezolvare:

# a)

CREATE TABLE Camere (
    Nr_camera CHAR(4),
    Nr_locuri INT(1),
    Status VARCHAR(20),
    Categ_VIP CHAR(1), -- 'Y' sau 'N'
    Data_eliberarii DATE
);

# b)

INSERT INTO Camere (Nr_camera, Nr_locuri, Status, Categ_VIP, Data_eliberarii)
VALUES 
('0301', 2, 'Ocupata', 'N', '2015-05-22'),
('0302', 4, 'Rezervata', 'Y', '2016-09-03'),
('0422', 1, 'Libera', 'Y', NULL),
('1307', 2, 'Libera', 'N', NULL),
('1204', 3, 'Ocupata', 'N', '2015-06-12'),
('0707', 2, 'Ocupata', 'Y', '2015-08-04');

/*Notă: Formatul DATE standard este YYYY-MM-DD. NULL se folosește când nu există dată de eliberare.*/

SELECT * from Camere;

# c)

SELECT * FROM Camere
WHERE Status = 'Ocupata';
    
# d)

SELECT * FROM Camere
WHERE Status = 'Libera' AND CAST(LEFT(Nr_camera, 2) AS UNSIGNED) > 10;

/*Se extrag primele două caractere din Nr_camera și se transformă în număr pentru a verifica etajul.*/

 

 



Copyright © 2016 Kalytheo