Avatar billede superrex Nybegynder
02. februar 2005 - 10:09 Der er 14 kommentarer og
1 løsning

Samle tabeller i ny tabel

Hejsa

Jeg vil gerne vide hvordan man laver et script som kan samle flere tabeller som er "bundet" sammen af et fælles id til en ny tabel.

tabel_1 + tabel_2 + tabel_3 = Ny_tabel (join på id)

Jeg håber at jeg har forklaret det godt nok
Avatar billede cpufan Juniormester
02. februar 2005 - 10:16 #1
der skal være en værdi som er fælles i de to (3) tabeller
i eksemplet her er det navn:
sql = Select * from tabel1, tabel2 where tabel1.navn = tabel2.navn
Avatar billede arne_v Ekspert
02. februar 2005 - 10:31 #2
Noget a la:

INSERT INTO tabel_total
SELECT *
FROM tabel_1,tabel_2,tabel_3
WHERE tabel_1.id=tabel_2.id AND tabel_2.id=tabel_3.id
Avatar billede superrex Nybegynder
02. februar 2005 - 10:38 #3
@cpufan
Det du skriver giver ingen mening

@arne_v
Det ser ok ud men jeg skal lige teste
Avatar billede superrex Nybegynder
02. februar 2005 - 10:59 #4
@arne_v
Hvordan får jeg den til at oprette felt navnene i tabellerne automatisk?
Avatar billede arne_v Ekspert
02. februar 2005 - 11:03 #5
Så skal du nok over i:

CREATE TABLE tabel_total
SELECT *
FROM tabel_1,tabel_2,tabel_3
WHERE tabel_1.id=tabel_2.id AND tabel_2.id=tabel_3.id
Avatar billede superrex Nybegynder
02. februar 2005 - 11:09 #6
Vil det sige at hvis tabel_1 har et felt der hedder navn, så bliver feltet navn oprettet i tabel_total?
Avatar billede superrex Nybegynder
02. februar 2005 - 11:14 #7
Jeg får denne fejl: Duplicate column name 'id' og det er fordi det at jeg join'er på et id som hedder volds_id men jeg har også et felt som hedder id i hver tabel og det felt skal droppes.

Hvordan fortæller jeg at den skal se bort fra id feltet?
Avatar billede arne_v Ekspert
02. februar 2005 - 11:19 #8
Prøv:

CREATE TABLE tabel_total
SELECT *
FROM (tabel_1 NATURAL JOIN tabel_2 ON tabel_1.id=tabel_2.id) NATURAL JOIN tabel_3 ON tabel_2.id=tabel_3.id
Avatar billede superrex Nybegynder
02. februar 2005 - 11:33 #9
Jeg har prøvet:
CREATE TABLE tabel_total
SELECT *
FROM (skema_a_du_alene NATURAL JOIN skema_a_fandt_sted ON skema_a_du_alene.voldsid=skema_a_fandt_sted.voldsid)


Men det giver følgende fejl:
You have an error in your SQL syntax.  Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON skema_a_du_alene.voldsid=skema_a_fandt_sted.voldsid)' at lin
Avatar billede superrex Nybegynder
02. februar 2005 - 11:44 #10
Det her virker næste perfekt:

CREATE TABLE tabel_total
SELECT
skema_a_du_alene.voldsid, skema_a_du_alene.du_alene_ja_nej, skema_a_fandt_sted.fandt_sted_hospitalet,
skema_a_fandt_sted.fandt_sted_lokalpsykiatrien,
skema_a_fandt_sted.fandt_sted_eget_hjem, skema_a_fandt_sted.fandt_sted_andet_txt
FROM skema_a_du_alene, skema_a_fandt_sted
WHERE skema_a_du_alene.voldsid = skema_a_fandt_sted.voldsid
Avatar billede arne_v Ekspert
02. februar 2005 - 11:45 #11
Altså hvis du kan liste alle felt navnene, så er det jo ikke noget problem at
undgå duplikat af felt navn ...
Avatar billede superrex Nybegynder
02. februar 2005 - 11:53 #12
Jeg vil helst ikke liste alle felt navnene fordi der er rigtigt mange over 60 men hvis det er den eneste måde.....
Avatar billede arne_v Ekspert
02. februar 2005 - 12:03 #13
prøv lige:

CREATE TABLE tabel_total
SELECT *
FROM (tabel_1 NATURAL JOIN tabel_2) NATURAL JOIN tabel_3
Avatar billede superrex Nybegynder
02. februar 2005 - 12:48 #14
Det giver: Duplicate column name 'id'

Men jeg har besluttet mig for at skrive alle felt navnene, så hvis du lige smider et svar.

Mange tak for hjælpen
Avatar billede arne_v Ekspert
02. februar 2005 - 12:53 #15
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester