logo



Problema 6

Stocurile unui magazin sunt reținute într-un tabel Stocuri cu structura: Cod_prod (N,6), Den_prod (T,50), Cantit (N,10.3), Pret (N,10.2), Data_exp(D), unde Data_exp este data de expirare a produsului.
Cerințe:
a) Creați structura tabelului Stocuri;
b) Introduceți următoarele înregistrări în tabelul Stocuri:

Cod_prod

Den_prod

Cantit

Pret

Data_exp

34324

Ciorap M39-41

24

4.50

 

2453

Ciocolata 100g

12

2.79

21.mai.2015

544

Napolitana

20

1.70

12.dec.2015

1253

Apa minerala

100

1.95

30.ian.2017

34556

Apa plata

100

2.05

14.ian.2017

23

Telecomanda universala

5

29

 

4332

Baterii

64

5.20

02.mai.2015

c) Afişaţi produsele care vor expira în luna mai 2015 ordonate descrescător după preț;
d) Folosind o interogare (secvenţă de instrucţiuni), ştergeţi produsul cu prețul maxim.

Rezolvare:

# a)

CREATE TABLE Stocuri (
    Cod_prod INT(6) NOT NULL PRIMARY KEY,
    Den_prod VARCHAR(50),
    Cantit DECIMAL(10,3),
    Pret DECIMAL(10,2),
    Data_exp DATE
);

# b)

# Notă: Vom folosi NULL pentru câmpurile cu Data_exp lipsă.

INSERT INTO Stocuri (Cod_prod, Den_prod, Cantit, Pret, Data_exp) VALUES
(34324, 'Ciorap M39-41', 24, 4.50, NULL),
(2453,  'Ciocolata 100g', 12, 2.79, '2015-05-21'),
(544,   'Napolitana', 20, 1.70, '2015-12-12'),
(1253,  'Apa minerala', 100, 1.95, '2017-01-30'),
(34556, 'Apa plata', 100, 2.05, '2017-01-14'),
(23,    'Telecomanda universala', 5, 29.00, NULL),
(4332,  'Baterii', 64, 5.20, '2015-05-02');

SELECT * from Stocuri;

# c)

SELECT * 
FROM Stocuri 
WHERE MONTH(Data_exp) = 5 AND YEAR(Data_exp) = 2015 
ORDER BY Pret DESC;
    
# d)

/* MySQL nu permite să actualizezi sau să ștergi dintr-un tabel folosind același tabel într-o subinterogare din WHERE
— adică nu poți șterge din Stocuri în timp ce îl folosești și în SELECT MAX(Pret).

✅ Soluție: folosește o subinterogare într-o clauză temporară (alias sau derived table)
*/

DELETE FROM Stocuri 
WHERE Pret = (
    SELECT p FROM (
        SELECT MAX(Pret) AS p FROM Stocuri
    ) AS max_pret
);

SELECT * from Stocuri;

 

 



Copyright © 2016 Kalytheo