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 · 306 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... ;)