Permalänk
Medlem

SQL Junction Table

Har en skoluppgift där jag försöker skapa två tabeller med en många till många relation och en mellanliggande junction table(Tbl_Spelar), men sistnämnda tabell visar absolut ingenting och jag kan inte förstå varför. Tabellen

CREATE TABLE [dbo].[Tbl_Skadespelare] ( [Sk_Id] INT IDENTITY (1, 1) NOT NULL, [Sk_Fornamn] VARCHAR (30) NOT NULL, [Sk_Efternamn] VARCHAR (30) NOT NULL, [Sk_Fodelsear] INT NOT NULL, [Sk_Spelar] INT NOT NULL, CONSTRAINT [Pk_Tbl_Skadespelare] PRIMARY KEY CLUSTERED ([Sk_Id] ASC) ); CREATE TABLE [dbo].[Tbl_Filmer] ( [Fi_Id] INT IDENTITY (1, 1) NOT NULL, [Fi_Titel] VARCHAR (50) NOT NULL, [Fi_Inspelningsar] INT NOT NULL, CONSTRAINT [Pk_Tbl_Film] PRIMARY KEY CLUSTERED ([Fi_Id] ASC) ); CREATE TABLE [dbo].[Tbl_Spelar] ( [Sp_Skadespelare] INT NOT NULL, [Sp_Film] INT NOT NULL, CONSTRAINT [Pk_Spelar] PRIMARY KEY CLUSTERED ([Sp_Skadespelare] ASC, [Sp_Film] ASC), CONSTRAINT [Fk_Spelar_Skadespelare] FOREIGN KEY ([Sp_Skadespelare]) REFERENCES [Tbl_Skadespelare] ([Sk_Id]), CONSTRAINT [Fk_Spelar_Filmer] FOREIGN KEY ([Sp_Film]) REFERENCES [Tbl_Filmer] ([Fi_Id]) );

Visa signatur

.: The sun's not yellow it's chicken :.

Permalänk
Medlem
Skrivet av nirre:

men sistnämnda tabell visar absolut ingenting

Vad menar du? Visa hur du lägger till data i Tbl_Spelar.

Permalänk
Medlem

@nirre:
Du måste fortfarande lägga in raderna i sista tabellen.

vad ger en select * from Tbl_Spelar?

Visa signatur

5700x3D | RTX 3080 | 2 TB M.2 | 32 GB RAM

Permalänk
Medlem
Skrivet av Xerbee:

Vad menar du? Visa hur du lägger till data i Tbl_Spelar.

Haha är det jag som missuppfattat allt? Att jag inte skulle lägga till data i Tbl_Spelar utan i de två andra tabellerna och så skulle det dyka upp i Spelar

Visa signatur

.: The sun's not yellow it's chicken :.

Permalänk
Medlem

@nirre:
1. du skapar rader i: Tbl_Skadespelare
2. du skapar rader i Tbl_Filmer

Detta kommer inte automatiskt skapa några rader i Tbl_Spelar

Du måste sen berätta för databasen vilka skådespelare som är med i vilka filmer.

Genom att även göra steg 3.

3. du skapar rader i Tbl_Spelar

Visa signatur

5700x3D | RTX 3080 | 2 TB M.2 | 32 GB RAM

Permalänk
Medlem
Skrivet av FX9:

@nirre:
1. du skapar rader i: Tbl_Skadespelare
2. du skapar rader i Tbl_Filmer

Detta kommer inte automatiskt skapa några rader i Tbl_Spelar

Du måste sen berätta för databasen vilka skådespelare som är med i vilka filmer.

Genom att även göra steg 3.

3. du skapar rader i Tbl_Spelar

Tack så mycket, det funkar och jag känner mig som en idiot hehe

Visa signatur

.: The sun's not yellow it's chicken :.

Permalänk
Medlem
Skrivet av nirre:

Tack så mycket, det funkar och jag känner mig som en idiot hehe

Så lite så.

Constraint delen behövs inte för att det ska fungera, men det garanterar att du inte får in IDn som pekar på poster som inte finns i de andra tabellerna. Med andra ord: bra att ha för att säkra upp sin data!

EDIT:
Sen är jag personligen inte förtjust i att döpa tabeller till tbl_*. Jag menar, det är ju uppenbart att det är en tabell känner jag
Försämrar läsbarheten i min mening. Men jag jobbar inte med TSQL som huvudsyssla, blir bara att jag hamnar på TSQL ändå av nån underlig anledning
När jag behöver något svårare jobb utfört med TSQL så har jag andra proffs som jag pratar med

Visa signatur

5700x3D | RTX 3080 | 2 TB M.2 | 32 GB RAM