Anonymní profil SQL newbie – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil SQL newbie – Programujte.comAnonymní profil SQL newbie – Programujte.com

 

Příspěvky odeslané z IP adresy 77.48.206.–

SQL newbie
MS SQL › Nelze přidat záznam do tabulky
30. 4. 2013   #175612

Došel jsem na to odkazoval jsem se na něco co neexistuje už je to OK  

SQL newbie
MS SQL › Nelze přidat záznam do tabulky
30. 4. 2013   #175611

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

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý