logo



Problema 33

Evidența activităţii unei firme de închirieri locuinţe se realizează prin intermediul unei baze de date ce cuprinde tabelul Locuinte cu structura Id_locuinta (N,4), Tip (T,20), Suprafata (N,4), Nr_camere (N,2), Pret_lunar (N,5.2), Disponibila (Y/N).
Cerinţe:
a) Creaţi structura tabelului Locuinte;
b) Introduceți următoarele înregistrări în tabel:

Id_locuinta

Tip

Suprafata

Nr_camere

Pret_lunar

Disponibila

4332

Apartament

85

3

95.75

Y

3211

Vila

130

6

245.00

N

3445

Garsoniera

45

1

49.30

N

3624

Apartament

65

3

87.00

Y

3575

Apartament

70

2

115.50

N

4578

Garsoniera

55

1

55.90

Y

c) Afişaţi apartamentele disponibile (câmpul Disponibila=Y), în ordinea crescătoare a preţului;
d) Folosind o interogare (secvenţă de instrucţiuni), reduceţi cu 4% preţul lunar de închiriere pentru garsonierele închiriate (câmpul Disponibila=N).

Rezolvare:

# a)

CREATE TABLE Locuinte (
    Id_locuinta INT(4),
    Tip VARCHAR(20),
    Suprafata INT(4),
    Nr_camere INT(2),
    Pret_lunar DECIMAL(5,2),
    Disponibila TINYINT(1)
);

/*Disponibila este un câmp de tip TINYINT(1) pentru a reprezenta valorile Y/N, 
unde 1 reprezintă Y (disponibilă) și 0 reprezintă N (ne-disponibilă).
*/

# b)

INSERT INTO Locuinte (Id_locuinta, Tip, Suprafata, Nr_camere, Pret_lunar, Disponibila) VALUES
(4332, 'Apartament', 85, 3, 95.75, 1),
(3211, 'Vila', 130, 6, 245.00, 0),
(3445, 'Garsoniera', 45, 1, 49.30, 0),
(3624, 'Apartament', 65, 3, 87.00, 1),
(3575, 'Apartament', 70, 2, 115.50, 0),
(4578, 'Garsoniera', 55, 1, 55.90, 1);

/*În această interogare:

1 reprezintă valoarea Y (disponibilă).

0 reprezintă valoarea N (ne-disponibilă).

*/

SELECT * from Locuinte;

# c)

SELECT * FROM Locuinte
WHERE Tip = 'Apartament' AND Disponibila = 1
ORDER BY Pret_lunar ASC;
    
/*Această interogare va afișa toate apartamentele disponibile (Disponibila = 1), ordonate crescător în funcție de Pret_lunar.*/    
    
# d)

UPDATE Locuinte
SET Pret_lunar = Pret_lunar * 0.96
WHERE Tip = 'Garsoniera' AND Disponibila = 0;

/*Această interogare va actualiza prețul lunar de închiriere pentru toate garsonierele
care sunt închiriate (adică au Disponibila = 0), reducându-l cu 4%.
*/

SELECT * from Locuinte;

 

 



Copyright © 2016 Kalytheo