Aug 112010
 

Flattr this!

Nu ska jag visa hur man kan komplettera sin databas via ett sql-kommando.

Jag utgår från filmdatabasen återigen som man finner här.

Om jag dubbelklickar på tabellikonen för filmerna så finner jag dessa filmer:

Fälten vi har att tillgå i mitt fall är FilmID, Filmnamn och År.

Gå in under Verktyg/SQL och skriv följande sql-kommando:

INSERT INTO ”Filmtabell”(”FilmID”,”Filmnamn”,”År”)
VALUES(9,’Alien’,1979);

Namnen måste stämma överens med fältnamnen som finns i databasen och dessutom är fnuttar och dubbelfnuttar ett måste på sättet jag visar.

INSERT INTO ”Filmtabell”(”FilmID”,”Filmnamn”,”År”)

Den här raden anger vilken tabell som gäller och inom parentesena står fältnamnen.

VALUES(9,’Alien’,1979);

Posten vi vill lägga till är Alien som är gjord år 1979. FilmID kommer att bli 9 för denna filmen. Notera att man inte kan ha samma id som redan finns bland befintliga poster.

Nu kan man fråga sig vad nyttan är med ett krångligt sql-kommando som är jobbigare än att skriva in posten på vanligt sätt.

I detta exempel kommer detta att framgå.

Skapa en ny tabell. Jag väljer att skapa ”Filmtabell2”. Denna tabell ger jag fältnamnen FilmID2, Movie2 och Year. Att jag väljer engelska språket för två fältnamn är med vilje för att demonstrationen ska bli bättre. I denna tabell ska FilmID2 vara nyckel och det är integer som gäller här på samma sätt som i den andra tabellen. Skillnaden är att vi inte vill ha en räknare.

Lägg nu in lite poster i databasen:

Notera att jag själv matat in nyckeln eftersom vi inte har en räknare och jag väljer då värden som inte finns i den andra tabellen.

För övrigt så såg den andra tabellen ut så här för mig:

Gå nu upp i Verktyg/SQL igen och skriv in följande:

INSERT INTO ”Filmtabell”(”FilmID”,”Filmnamn”,”År”)
SELECT  ”FilmID2″,”Movies2″,”Year” from ”Filmtabell2”;

och resultatet blir detta i tabellen Filmtabell:

Vi har med annat ord sammanfogat data från två tabeller. Ett mycket värdefullt redskap om man har tusentals poster fördelat på två tabeller.

INSERT INTO ”Filmtabell”(”FilmID”,”Filmnamn”,”År”)

Denna raden säger att vi vill lägga in data i Filmtabell och det är fältnamnen FilmID, Filmnamn och År som datan ska matas in i.

SELECT  ”FilmID2″,”Movies2″,”Year” from ”Filmtabell2”;

Här väljer vi var datan ska hämtas ifrån och det är Filmtabell2 som gäller och då är det fältnamnen FilmID2, Movies2 och Year datan ska hämtas ifrån. Fältnamnen i FilmID2 måste stå i samma ordning som i Filmtabell. Skulle vi möblera om och skriva ”FilmID2″,”Year”,”Movies2″ på andra raden så hamnar filmnamnen i År-fältet.

  One Response to “Mata in data i en databas / Sammanfoga två tabeller (SQL-skolan del 4)”

  1. INSERT INTO ”Filmtabell”(”FilmID”,”Filmnamn”,”År”)
    SELECT ”FilmID2″,”Movies2″,”Year” from ”Filmtabell2″
    where ”Movies2″ not in (Select ”Filmnamn” from ”Filmtabell1)

    För att undvika eventuella dubletter.

Kommentera

%d bloggare gillar detta: