Pomoc w poleceniu INSERT

Odpowiedz Nowy wątek
2018-12-12 11:36
0

Witam,

Proszę o pomoc w wpisywaniu INSERTA do poniższej bazy danych.

Mianowicie nie mam pomysłu jak wypełnić tabele 'Receptury'. Próbowałem kilkukrotnie, lecz bez powodzenia.

Z góry dziękuję za pomoc.

CREATE Database Piekarnia

GO  

USE Piekarnia;   

GO   

CREATE TABLE Wyroby(   

Id_Wyrobu INT PRIMARY KEY,   

Nazwa_Wyrobu VARCHAR(60) NOT NULL,     

Cena_Wyrobu smallmoney CHECK (Cena_Wyrobu>0) Not NULL,    

Waga_Wyrobu FLOAT Check(Waga_Wyrobu>0) Not NULL,   

);    

GO   

CREATE TABLE Pracownicy(   

Id_Pracownika INT PRIMARY KEY,   

Imie VARCHAR(60) NOT NULL,   

Nazwisko VARCHAR(60) NOT NULL,   

Telefon VARCHAR(12) NOT NULL,

Stanowisko Varchar(15) CHECK(Stanowisko IN('Piecowy','Kierownik','Pomocnik')) NOT NULL,   

)   

GO  

CREATE TABLE Klienci(    

Id_Klienta INT PRIMARY KEY,    

Imie VARCHAR(60) NOT NULL,    

Nazwisko VARCHAR(60) NOT NULL,   

Telefon VARCHAR(12) NOT NULL,

Adres VARCHAR(60) NOT NULL,    

);   

GO   

CREATE TABLE Zamowienia(   

Id_Zamówienia INT,    

Id_Wyrobu INT,  

Id_Klienta INT,  

Ilosc_Wyrobu INT Check(Ilosc_Wyrobu>0), 

Id_Pracownika INT 

CONSTRAINT Jaki_Wyrob FOREIGN KEY(Id_Wyrobu)  

REFERENCES Wyroby(Id_Wyrobu)    

ON DELETE CASCADE   

ON UPDATE CASCADE,  

CONSTRAINT Klient FOREIGN KEY(Id_Klienta)  

REFERENCES Klienci(Id_Klienta)  

ON DELETE CASCADE   

ON UPDATE CASCADE,

CONSTRAINT Pracownik FOREIGN KEY(Id_Pracownika)

REFERENCES Pracownicy(Id_Pracownika)

ON DELETE CASCADE   

ON UPDATE CASCADE   

);    

GO    

CREATE TABLE Surowce(   

Id_Surowca INT PRIMARY KEY,    

Nazwa_Surowca VARCHAR(60) CHECK(Nazwa_Surowca IN('Mak','Mąka','Drożdże','Sól','Sezam')) NOT NULL,   

Ilosc_W_Kilogramach INT Check(Ilosc_w_kilogramach>0) NOT NULL,

);    

GO    

CREATE TABLE Receptury(

Id_Wyrobu INT NOT NULL,

Id_Surowca INT NOT NULL,

Ilosc_W_Kilogramach INT NOT NULL

CONSTRAINT Wyrób FOREIGN KEY(Id_Wyrobu)  

REFERENCES Wyroby(Id_Wyrobu)    

ON DELETE CASCADE   

ON UPDATE CASCADE,  

CONSTRAINT Jaki_Surowiec FOREIGN KEY(Id_Surowca)

REFERENCES Surowce(Id_Surowca)

ON DELETE CASCADE   

ON UPDATE CASCADE,

CONSTRAINT Ilosc FOREIGN KEY (Ilosc_W_Kilogramach)

REFERENCES Surowce(Id_Surowca)

ON DELETE NO ACTION    

ON UPDATE NO ACTION 

);

INSERT INTO Wyroby  VALUES (1,'Chleb Pszenny',1.99,1.2),     

(2,'Chleb Wiejski',2.99,0.7),       

(3,'Chleb Pasterski',1.49,0.8),      

(4,'Kajzerka',0.99,0.05);     

GO      

INSERT INTO  Pracownicy VALUES (1,'Grzegorz','Kowalski',111222333,'Piecowy'),    

(2,'Andrzej','Piekarski',444555666,'Pomocnik'),    

(3,'Sylwester','Przybyła',777888999,'Kierownik');     

GO     

INSERT INTO Klienci VALUES (1,'Stanisław', 'Lem', +48111222333,'Warszawa Kolorowa 10'),   

(2,'Bogumił', 'Wawrzyszew',+48222333444, 'Warszawa Dębowa 5'),   

(3,'Czesław', 'Mozil',+48333444555, 'Warszawa Klonowa 11');   

GO 

INSERT INTO Zamowienia VALUES (1,1,3,111,2), (2,3,2,1122,1), (3,2,1,2000,3);  

GO   

INSERT INTO Surowce VALUES (1,'Mąka',1000), (2,'Drożdże',300), (3, 'Mak',80); 

GO 

Pozostało 580 znaków

2018-12-12 12:43
2

Wywal FK na ilosc.
EDIT: Klucze obce dodajemy TYLKO i wyłącznie do tabel słownikowych. Na ilosć mógłbyś ją użyć, gdybyś miał tabelę z Ilościami. Szczerze mówiąc trudno mi ją sobie wyobrazić, choć wiele w bazach danych widziałem... :)
Klucze obce zazwyczaj odwołują się do PK innej tabeli (niekoniecznie muszą być jednopolowe, ale muszą być unikalne).
W sytuacji, którą sprokurowałeś ilość, którą wprowadzasz musiałaby być liczbą całkowitą i to dodatkow taką, jaki jest PK z tabeli "Surowce"

edytowany 1x, ostatnio: Marcin.Miga, 2018-12-12 19:28
Pomogło ;) Może Pan jeszcze wytłumaczyć dlaczego postąpiłem zle? - Michał Bieniek 2018-12-12 15:30
@Michał Bieniek: Nie "Pan". Już edytuję posta, by uzasadnić... - Marcin.Miga 2018-12-12 19:16
Dziękuję bardzo za pomoc ;) - Michał Bieniek 2018-12-12 20:15

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0