Blir det rätt?
Ja.
Är det någon skillnad mellan frågorna?
Nej.
Varför en hjälptabell? Kommer en entitet i main att relateras till flera olika länder?
5 svar · 328 visningar · startad av celia
Jag har en tabell main:
main_id (räknare)
land
.
.
.
Nu vill jag ta bort kolumnen land och lägga den i en ny tabell där varje land får ett unikt id:
land_id (räknare)
land
INSERT INTO land (land)
SELECT distinct(land) FROM main
och sedan skapa en hjälptabell main_land:
main_id
land_id
Man hämtar main_id från main och land_id från land, där main.land = land.land. Men hur ser INSERT INTO-koden ut? Kan man skriva såhär:
INSERT INTO main_land (main_id, land_id)
SELECT main.id, land.id
FROM main, land
WHERE main.land = land.land
Det verkar fungera men blir det rätt? Ska man använda INNER JOIN istället, eller är det samma sak? Flera poster i main kan ju ha samma värde på land.
INSERT INTO main_land (main_id, land_id)
SELECT main.id, land.id
FROM main
INNER JOIN land
ON main.land = land.land
Jag använder SQL Server.
Blir det rätt?
Ja.
Är det någon skillnad mellan frågorna?
Nej.
Varför en hjälptabell? Kommer en entitet i main att relateras till flera olika länder?
LarsG skrev:
Varför en hjälptabell? Kommer en entitet i main att relateras till flera olika länder?
Japp
Tack för hjälpen!
Egentligen borde du väl ha en till tabell mellan? För flera entiteter kan väl vara kopplade till flera länder?
Alltså: Bengt bor i Israel och ibland i Turkiet. Men i Turkiet bor även Rolf.
Personer
Namn = Bengt, ID = 1
Namn = Rolf, ID = 2
Landrelationer
uniktID = 1, personID = 1, landID = 1
uniktID = 2, personID = 1, landID = 2
uniktID = 3, personID = 2, landID = 2
Land
ID = 1, namn = Israel
ID = 2, namn = Turkiet
Eller är jag ute på cykeltur?
Du är både ute och cyklar och inte
Jag har två tabeller med en hjälptabell emellan precis som du skrivit!
Oh...