![]() |
|
|
|
|
Problema 6Stocurile 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.
c) Afişaţi produsele care vor expira în luna mai 2015 ordonate descrescător după preț;
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