Documente Academic
Documente Profesional
Documente Cultură
nume prenume CNP adresa telefon Disponibil produs data pret Suma
incasata
Ion Adi 123456 Timis 123456789 0 Indesit 10/01/2007 66 66
Achim Gheorghe 123457 Resita 234567890 0 Siemens 01/02/2003 100 100
Dima Alex 123458 Arad 326774434 0 Bosch 07/12/2005 120 20
Duma Mihai 123459 Deva 576325767 0 LG 11/12/2005 55 37
Ion Adi 123456 Timis 123456789 0 Sony 14/05/2006 7.99 1.99
4. Să se scrie o procedura care sa permita vanzarea unui produs (La vanzarea unui produs, se va
verifica disponibilul clientului, si acesta va fi adaugat sumei incasate. In cazul in care suma
incasata depaseste valoarea ramasa de achitat, diferenta va fi trecuta in disponibilul clientului)
- procedura va fi apelata cu parametrii: CNP, nume produs, data, pret, suma incasata.
5. Sa se genereze un raport care sa cuprinda numele,prenumele, cnp, si produsele achizitionate si
achitate integral de catre clienti.
6. Sa se genereze un raport detaliat care sa cuprinda numele,prenumele, CNP, si toate produsele
achizitionate, pretul, si restul de plata, ordonat dupa nume, prenume, data achitiei, crescator,
respectiv rest de plata descrescator.
7. Sa se scrie un trigger care la adaugarea unui produs, sa calculeze automat disponibilul si suma
incasata, in conditiile enuntate la punctul 4.
8. Sa se scrie o functie care sa primeasca ca parametri CNP si produs si care sa returneze restul
de plata.
9. Sa se afiseze doar clientii care au minim 4 produse achitate integral, sau au achitionat produse
a caror valoare totala depaseste 1000, in maxim 2 ani consecutivi precizand: nume, prenume,
CNP si respectiv suma totala incasata., si care nu au produse achitate partial (Clienti majori).
10. Sa se afiseze clientul care are cele mai multe produse achiztionate dar neplatite integral,
precizand numele, prenumele, CNP, numar de produse si rata lui de achitare (cat la suta a
platit din pretul bunurilor achizitionate).
Client
Produs
Achizitie
Table - Client
INSERT INTO
`client`(`Nume`,`Prenume`,`CNP`,`Telefon`,`Adresa`,`Disponibil_in_cont`) VALUES (`Ion`,
`Adi`, `123456`,123456789, `Timis`, 0);
INSERT INTO
`client`(`Nume`,`Prenume`,`CNP`,`Telefon`,`Adresa`,`Disponibil_in_cont`)
VALUES (`Achim`, `Gheorghe`, `123457`,234567890, `Resita`, 0);
INSERT INTO
`client`(`Nume`,`Prenume`,`CNP`,`Telefon`,`Adresa`,`Disponibil_in_cont`)
VALUES (`Dima`, `Alex`, `123458`,326774434, `Arad`, 0);
INSERT INTO
`client`(`Nume`,`Prenume`,`CNP`,`Telefon`,`Adresa`,`Disponibil_in_cont`)
Table - Produs
INSERT INTO `produs` (`Id`,`Marca`,`Pret`) VALUES (1,`Indesit`,66);
INSERT INTO `produs` (`Id`,`Marca`,`Pret`) VALUES (2,`Simens`,100);
INSERT INTO `produs` (`Id`,`Marca`,`Pret`) VALUES (3,`Bosch`,120);
INSERT INTO `produs` (`Id`,`Marca`,`Pret`) VALUES (4,`LG`,55);
INSERT INTO `produs` (`Id`,`Marca`,`Pret`) VALUES (3,`Sony`,7.99);
Table- Achizitie
INSERT INTO
`achizitie`(`Id`,`cnp_Client`,`Id_produs`,`Data_achizitiei`,`Suma_incasata`,`Pret`)
VALUES (1,`123456`,1,`2007-01-10`,66,66);
INSERT INTO
`achizitie`(`Id`,`Cnp_client`,`Id_produs`,`Data_achizitiei`,`Suma_incasata`,`Pret`)
VALUES (2,`123457`,2,`2003-02-01`,100,100);
INSERT INTO
`achizitie`(`Id`,`Cnp_client`,`Id_produs`,`Data_achizitiei`,`Suma_incasata`,`Pret`)
VALUES (3,`123458`,3,`2005-12-07`,20,120);
INSERT INTO
`achizitie`(`Id`,`Cnp_client`,`Id_produs`,`Data_achizitiei`,`Suma_incasata`,`Pret`)
VALUES (4,`123459`,4,`2005-12-11`,37,55);
INSERT INTO
`achizitie`(`Id`,`Cnp_client`,`Id_produs`,`Data_achizitiei`,`Suma_incasata`,`Pret`)
VALUES (5,`123456`,5,`2006-05-14`,1.99,7.99);
4. Procedura stocata pentru achizitia unui produs
USE `proiect_pbd`;
DROP procedure IF EXISTS `permite_vanzare`;
DELIMITER $$
USE `proiect_pbd`$$
CREATE DEFINER=`root`@`localhost` PROCEDURE `permite_vanzare`(IN cod_numeric
CHAR(13),
IN nume_produs varchar(20),
IN data_ach date,
IN pret double,
IN suma_incasata double)
BEGIN
DECLARE disponibil double default 0;
DECLARE total_plata double default 0;
DECLARE suma_ramasa double default 0;
DECLARE id_produs int;
SELECT disponibil_in_cont INTO disponibil FROM client WHERE cnp = cod_numeric;
SET total_plata = disponibil + suma_incasata;
SET suma_ramasa = total_plata - pret;
IF suma_ramasa > 0 THEN
SELECT id INTO id_produs FROM produs WHERE marca = nume_produs;
INSERT INTO
`achizitie`(`cnp_client`,`id_produs`,`data_achizitiei`,`suma_incasata`)
VALUES (cod_numeric,id_produs,data_ach,total_plata);
UPDATE client SET disponibil_in_cont = suma_ramasa WHERE cnp = cod_numeric; END
IF;
END$$
DELIMITER ;
USE `proiect_pbd`;
DROP function IF EXISTS `calcul_rest_plata`;
DELIMITER $$
USE `proiect_pbd`$$
CREATE DEFINER=`root`@`localhost` FUNCTION `calcul_rest_plata`(cod_numeric char(13),
id_p int) RETURNS double
BEGIN
DECLARE pret_produs double default 0;
DECLARE suma_inc double default 0;
SELECT pret INTO pret_produs from produs where id = id_p;
SELECT suma_incasata INTO suma_inc from achizitie where cnp_client = cod_numeric AND
id_produs = id_p;
RETURN suma_inc-pret_produs;
END$$
DELIMITER ;
9. Afisaza clientii care au minim 4 produse achitate integral, sau au achitionat produse a
caror valoare totala depaseste 1000 precizand: nume, prenume, CNP si respectiv suma
totala incasata., si care nu au produse achitate partial
10. Se afiseaza clientul care are cele mai multe produse achiztionate dar neplatite integral,
precizand numele, prenumele, CNP, numar de produse si rata lui de achitare (cat la suta a
platit din pretul bunurilor achizitionate)