Michał
P.
Kierownik, AEGON
Towarzystwo
Ubezpieczeń na Życie
S.A.
Temat: Procedura wstawiająca dane z 3 tabel do 1 łączącej.
Witam,Proszę o pomoc w napisaniu procedury w Sql.
Mam 4 tabele:
1.
osoba z kolumnami: osoba_id, nazwisko, imie
2.
oceny z kolumnami: ocena_id, ocena
3.
Przedmioty z kolumnami: przedmiot_id, nazwa
4.
osoby_oceny z kolumnami
Wpisy w tej tabeli są wpisami łączącymi 3 powyższe tabele czyli (osoba_id, przedmiot_id, ocena_id)
Chciałbym napisać procedurę która wstawiałaby mi te dane do tabeli sprawdzając wpisane w wywołaniu dane (nazwisko, nazwa przedmiotu, ocena) w poszczególnych tabelach i po sprawdzeniu ich istnienia do tabeli nr 4 wprowadziłaby wartości id tych parametrów.
Przykład wywołania:
Exec wstaw_ocene (Kowalski, Matematyka, 2,5)
Udało mi się napisać jak poniżej ale problem jest taki, że nie są brane pod uwagę parametry wpisane w wywołaniu tylko do tabeli osoby_oceny wstawiane są zawsze id ostanich wierszy z poszczególnych tabel.
ALTER PROCEDURE [dbo].[wstaw_ocene]
@nazwisko VARCHAR(30)
,@imie CHAR(15)
,@przedmiot_nazwa CHAR(15)
,@ocena char(3)
AS
DECLARE
@osoba_id INT
,@przedmiot_id INT
,@ocena_id INT
BEGIN
IF NOT EXISTS (SELECT 1 FROM osoba WHERE nazwisko = @nazwisko AND imie = @imie)
PRINT 'W bazie nie istnieje osoba o takich danych'
SELECT @osoba_id = osoba_id FROM osoba
IF EXISTS (SELECT 1 FROM przedmioty WHERE nazwa = @przedmiot_nazwa)
SELECT @przedmiot_id = przedmiot_id FROM przedmioty
IF EXISTS (SELECT 1 FROM oceny WHERE ocena = @ocena)
SELECT @ocena_id = ocena_id FROM oceny
INSERT INTO osoby_oceny (osoba_id, przedmiot_id, ocena_id)
VALUES (@osoba_id, @przedmiot_id, @ocena_id)
END;
Z góry serdecznie dziękuję za pomoc.