Dobrý den,
při pokračování v projektu jsem narazil na chybu, když jsem se snažil jakýkoliv záznam z tabulky smazat nebo přidat tak program hlásí chybu s klíči. Mohl by mi prosím někdo uvést příklad, jak tohle obejít? Jedná se o ukol č. 8 9 10 níže
Create database Projekt_test
Use Projekt_test
Create table Zbozi(
ZboziID int identity primary key not null,
Nazev varchar(30) not null,
DruhZboziID int not null,
ObchodID int not null,
Mnozstvi_ks_nebo_dkg decimal not null,
)
Create table Obchody(
ObchodID int identity primary key not null,
Nazev_obchodu varchar(15) not null,
Otevreno_OD time(0) not null,
Otevreno_DO time(0) not null,
Vzdalenost_v_km int not null,
)
Insert into Zbozi(Nazev,DruhZboziID,ObchodID,Mnozstvi_ks_nebo_dkg)values
('Rajče',1,1,10),
('Okurek',2,2,8),
('Paprika',3,1,3),
('Rohlíky',4,1,15),
('Jablka',5,2,0),
('Chléb',6,1,1),
('Housky',7,2,10),
('Vejce',8,3,20),
('Jahody',9,3,2),
('Šunka',10,4,0),
('Krkovička',11,3,20),
('Klobásy',12,4,4),
('Pomeranče',13,1,0),
('Limonáda',14,2,0),
('Sirup',15,1,2),
('Nanuk',16,3,4),
('Polárkový dort',17,3,2),
('Jogurt',18,1,5),
('Banány',19,4,6),
('Deodorant',20,4,2),
('Antiperspirant',21,2,3),
('Make-up',22,3,0),
('Parfém',23,1,1),
('Toaletní papír',24,3,5),
('Sprej proti hmyzu',25,2,1),
('Čistič prachu',26,1,0),
('Krém na ruce',27,3,2),
('Voda po holení',28,1,2),
('Holící strojek',29,2,0)
Insert into Obchody(Nazev_obchodu,Otevreno_OD,Otevreno_DO,Vzdalenost_v_km)values
('Kaufland','08:00','17:00','13'),
('Lidl','07:00','20:00','30'),
('Tesco','05:00','23:00','20'),
('Penny-Market','09:00','21:00','9')
Create table Slevy(
SlevyID int identity primary key not null,
ObchodID int not null,
Nazev_slevy varchar(15) not null,
Velikost_v_procentech int,
Plati_OD date,
Plati_DO date
)
Insert into Slevy(ObchodID,Nazev_slevy,Velikost_v_procentech,Plati_OD,Plati_DO)values
(1,'Pečivo',10,'1.1.2013','2.1.2013'),
(3,'Ostatní',15,'6.23.2014','8.2.2014'),
(2,'Ovoce',5,'9.28.2013','5.26.2013'),
(4,'Ovoce',10,'2.24.2013','5.9.2014'),
(3,'Maso',25,'5.25.2014','5.3.2015'),
(2,'Zelenina',5,'9.20.2013','10.20.2013'),
(1,'Zelenina',30,'5.20.2013','6.20.2013'),
(4,'Maso',15,'7.9.2013','8.15.2013'),
(3,'Ovoce',20,'7.6.2013','8.8.2013'),
(2,'Pečivo',10,'1.1.2013','2.1.2013'),
(1,'Ovoce',35,'6.6.2013','7.6.2013'),
(4,'Maso',50,'6.1.2013','8.1.2013'),
(1,'Puma',10,'1.1.2013','2.1.2013'),
(3,'Vichy',15,'6.23.2014','8.2.2014'),
(2,'Bez slev',null,null,null),
(4,'Bez slev',null,null,null),
(3,'Indulona',25,'5.25.2014','5.3.2015'),
(2,'Gillete',5,'9.20.2013','10.20.2013'),
(1,'Pronto',30,'5.20.2013','6.20.2013'),
(4,'Bez slev',null,null,null),
(3,'Toalex',20,'7.6.2013','8.8.2013'),
(2,'Wilkinson',10,'1.1.2013','2.1.2013'),
(1,'Bez slev',null,null,null),
(4,'Bez slev',null,null,null)
Create table DruhZbozi(
DruhZboziID int primary key identity not null,
SlevyID int not null,
ZboziID int not null,
Druh_nebo_znacka varchar(15) not null,
)
insert into DruhZbozi(ZboziID,SlevyID,Druh_nebo_znacka) values
(1,6,'Zelenina'),
(2,7,'Zelenina'),
(3,15,'Zelenina'),
(4,1,'Pečivo'),
(5,3,'Ovoce'),
(6,10,'Pečivo'),
(7,16,'Pečivo'),
(8,2,'Ostatní'),
(9,4,'Ovoce'),
(10,5,'Maso'),
(11,8,'Maso'),
(12,12,'Maso'),
(13,11,'Ovoce'),
(14,23,'Pití'),
(15,24,'Pití'),
(16,15,'Ostatní'),
(17,23,'Ostatní'),
(18,16,'Ostatní'),
(19,4,'Ovoce'),
(20,24,'Nivea'),
(21,23,'Axe'),
(22,14,'Vichy'),
(23,13,'Puma'),
(24,21,'Toalex'),
(25,16,'Zmizex'),
(26,19,'Pronto'),
(27,17,'Indulona'),
(28,18,'Gillete'),
(29,22,'Wilkinson')
--1 Chci vypsat velikost slevy a druh slevněného zboží
select Druh_nebo_znacka,Velikost_v_procentech from DruhZbozi left join Slevy on DruhZbozi.SlevyID=Slevy.SlevyID where Slevy.Nazev_slevy='Pečivo'
--2 Chci vypsat zboží, které slevněné není a jeho název
select Druh_nebo_znacka, Velikost_v_procentech from DruhZbozi left join Slevy on DruhZbozi.SlevyID=Slevy.SlevyID where Slevy.Velikost_v_procentech is null
--3 Chci vypsat druh a název zboží
select Nazev,Druh_nebo_znacka from DruhZbozi left join Zbozi on Zbozi.ZboziID=DruhZbozi.ZboziID
--4 Chci vypsat název a druh nebo značku produktu, podle velikosti slevy v procentech, kterou si určím sám
select Nazev,Druh_nebo_znacka,Velikost_v_procentech from DruhZbozi
left join Zbozi on Zbozi.ZboziID=DruhZbozi.ZboziID
left join Slevy on Slevy.SlevyID=DruhZbozi.SlevyID where velikost_v_procentech in
(select velikost_v_procentech from slevy where velikost_v_procentech > 10) order by velikost_v_procentech desc
--5 Chci vypsat obchody, ve kterých probíhá od určitého období sleva
select Obchody.Nazev_obchodu,Velikost_v_procentech,Plati_OD from Slevy
left join Obchody on Slevy.ObchodID=Obchody.ObchodID where Plati_OD>'2013-01-01'
--6 Chci vypsat zásoby, kterých je nejvíc
select Nazev,Mnozstvi_ks_nebo_dkg from Zbozi where Mnozstvi_ks_nebo_dkg
in (select MAX(Mnozstvi_ks_nebo_dkg) from Zbozi)
--7 Chci udelat nákupní lístek a proto potřebuju vypsat, které zásoby potřebuju nakoupit a které nepotřebuju
select Nazev, Potreba_koupit=
Case
when Mnozstvi_ks_nebo_dkg=0 then 'Je potřeba nakoupit'
when Mnozstvi_ks_nebo_dkg>0 then 'Není potřeba nakoupit'
else '???'
end
from zbozi
Order by Potreba_koupit
--8 Chci přidat nový druh zboží(Pěna do koupele)
insert into DruhZbozi(SlevyID,ZboziID,Druh_nebo_znacka) values
(30,1,'Pěna do koupele')
--9 Chci smazat pěnu do koupele, protože se již nepoužívá
delete from Zbozi where Nazev='Pěna do koupele'
--10 Chci přidat uplně novou slevu
insert into Slevy(ObchodID,Nazev_slevy,Velikost_v_procentech,Plati_OD,Plati_DO) values
(2,'Mentolky',20,'2013-06-03','2013-07-03')
--11 Chci upravit slevu u obchodu lidl pro pití o velikosti 15% od 9.6.2014 do 6.7.2014
update Slevy
set
ObchodID=2,
Nazev_slevy='Pití',
Velikost_v_procentech='15',
Plati_OD='2014-06-09',
Plati_DO='2014-07-06'
where SlevyID=24