Problem z relacjami pomiedzy tabela

0

Witam, jestem początkującym użytkownikiem MS SQL, i nie wiem czy poprawnie wytłumaczę ale się postaram .
Mam po wykonania projekt wypożyczalni elektronarzędzi i nawet mi to poszło, ale pojawił się problem z relacjami pomiędzy tabelami ponieważ po wprowadzeniu nazwy narzędzia i napięcia. Rodzaje napięć mam w drugiej tabeli i jeżeli pisze selekta to nie wyciąga mi z drugiej tabeli rodzaju napięcia
Podejrzewam ze coś skopałem z kluczami ale nie mogę dojść do tego proszę o pomoc.

create database projekt
go


use projekt 


create schema Wypozyczalnia
GO


Create Table Wypozyczalnia.Osoba(
	ID int IDENTITY PRIMARY KEY,
	EmailAddress nvarchar (100) NOT NULL,
	Imie nvarchar (100) NULL,
	Nazwisko nvarchar (100) NULL,
	telefon VARCHAR(50) NOT NULL,
	Pracownik bit NOT NULL
)
GO


Create Table Wypozyczalnia.Typ(
	ID int IDENTITY PRIMARY KEY,
	Typ nvarchar (50) NOT NULL
)
GO


Create Table Wypozyczalnia.Producent(
	ID int IDENTITY PRIMARY KEY,
	Producent nvarchar (50) NOT NULL
)
GO


Create Table Wypozyczalnia.Wypozyczenie(
	ID int IDENTITY PRIMARY KEY,
	data_wypozycznia datetime NOT NULL,
	data_zwrotu datetime NOT NULL,
	OsobaID int NULL,
	NarzedzieID int NULL
)
GO


Create Table Wypozyczalnia.Narzedzie(
	ID int IDENTITY PRIMARY KEY,
	NazwaNarzedzia nvarchar (50) NOT NULL,
	ProducentID int NULL,
	TypID int NULL,
	Napiecie int NULL
)
GO


Create Table Wypozyczalnia.Napiecie(
	ID int IDENTITY PRIMARY KEY,
	Napiecie nvarchar (50) NOT NULL
	)
GO

ALTER TABLE Wypozyczalnia.Wypozyczenie ADD CONSTRAINT FK_Wypozyczenie_OsobaID FOREIGN KEY(OsobaID)
REFERENCES Wypozyczalnia.Osoba(ID)


ALTER TABLE Wypozyczalnia.Wypozyczenie ADD CONSTRAINT FK_Wypozyczenie_NarzedzieID FOREIGN KEY(NarzedzieID)
REFERENCES Wypozyczalnia.Narzedzie(ID)



ALTER TABLE Wypozyczalnia.Narzedzie ADD CONSTRAINT FK_Wypozyczenie_TypID FOREIGN KEY(TypID)
REFERENCES Wypozyczalnia.Typ(ID)



ALTER TABLE Wypozyczalnia.Narzedzie ADD CONSTRAINT FK_Wypozyczenie_ProducentID FOREIGN KEY(ProducentID)
REFERENCES Wypozyczalnia.Producent(ID)

ALTER TABLE Wypozyczalnia.Narzedzie ADD CONSTRAINT FK_Wypozyczenie_NapiecieID 
FOREIGN KEY(Napiecie)
REFERENCES Wypozyczalnia.Napiecie(ID)


INSERT INTO Wypozyczalnia.Napiecie (Napiecie)
VALUES ('24V')
INSERT INTO Wypozyczalnia.Napiecie (Napiecie)
VALUES ('230V')
INSERT INTO Wypozyczalnia.Napiecie (Napiecie)
VALUES ('400V')

SELECT * FROM Wypozyczalnia.Napiecie

INSERT INTO Wypozyczalnia.Narzedzie (NazwaNarzedzia,Napiecie)
VALUES ('Odkurzacz','1')
INSERT INTO Wypozyczalnia.Narzedzie (NazwaNarzedzia,Napiecie)
VALUES ('WiertarkaUdarowa','1')
INSERT INTO Wypozyczalnia.Narzedzie (NazwaNarzedzia,Napiecie)
VALUES ('Szlifierka','2')
INSERT INTO Wypozyczalnia.Narzedzie (NazwaNarzedzia,Napiecie)
VALUES ('Frezarka','1')
INSERT INTO Wypozyczalnia.Narzedzie (NazwaNarzedzia,Napiecie)
VALUES ('Piła','3')

SELECT * FROM Wypozyczalnia.Narzedzie

screenshot-20180622082101.png

screenshot-20180622083731.png

0

SQL Server robi dokładnie to, o co go prosisz. Jeśli nie powiesz mu, by wypisał ci Napiecie z tabeli Napiecie, to tego nie zrobi. BTW masz błąd w tabeli Narzedzie - pole Napiecie to powinno być NapiecieID

0

Przeczytaj sobie ten wątek: Klucz obcy

0

Dzięki za znalezienie mojej niedokładności, zostało to już naprawione.
Moje pytanie skoro mam uzupełnioną tabele Napięcia o dane wartości, to jak uzupełniam tabele Narzędzie i aby w kolumnie pojawiło się napięcie załóżmy 230V pisze w INSER Nazwa narzędzia oraz klucz główny z tabeli Napięcie czyli w moim przypadku NapięcieID 2.
Wpisując SELECTA z tabeli Narzędzia w rekordzie wtedy pojawia się wynik w kolumnie NapięcieID 2 a powinno 230V.

0

Join:

Select
n.nazwanarzedzia, na.napiecie
From
Wypozyczalnia.narzedzie n
Left join wypozyczalnia.napiecie na on n.napiecie=na.id
0

Wielkie dzięki, teraz zrozumiałem mój błąd w rozumowaniu.
Chciałem żeby w tabeli Narzędzia i kolumnie NapięcieID wyświetlał mi wartość napięcia a to przecież nie jest możliwe bo wartość jest przechowywana w innej tabeli. Dopiero po połączeniu tych dwóch tabel można taki wynik uzyskać.

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