Avatar billede kumpel2000 Nybegynder
31. maj 2007 - 11:54 Der er 6 kommentarer og
1 løsning

Flette tabeller.

Jeg har to tabeller, som indeholder det samme, men tabel 2 har fået flere felter som gerne skal være med i tabel 1 med data. Hvordan fletter jeg det lettest sammen på SQL serveren.

Eks.

Tabel 1.

billede,dato,beskrivelse

Tabel 2.

billede,dato,beskrivelse,sted,forfatter
Avatar billede lorentsnv Nybegynder
31. maj 2007 - 16:57 #1
Kan du beskrive lidt mere hvad du vil.

Ønsker du at joine tabel1 og tabel 2, fordi tabel 1 har nogle flere records end tabel 2, som til gengeld har flere felter?
Eksempel:
Select t1.billede, t1.dato, t1.beskrivelse, t2.sted, t2.forfatter
from tabel1 t1
left join tabel2 t2
on t1.billede = t2.billede


Eller ønsker du at udvide tabel 1 med ooplysnigner fra tabel 2?

Giv en beskrivelse af hvad du skal bruge det til, så vil det være nemmere at lave en SQL som kan hjælpe dig.
Avatar billede kumpel2000 Nybegynder
31. maj 2007 - 17:19 #2
Her er lidt mere beskrivelse.

Jeg har 2 tabeller, som i princippet er ens. Men tabel 1 har flere felter, som jeg gerne vil have over i tabel 2.

Tabel 1 har følgende felter : billede,dato,beskrivelse
Tabel 2 har følgende felter : billede,dato,beskrivelse,sted,forfatter

felterne sted og forfatter vil jeg gerne have over i Tabel 1 fra tabel 2, sådan at billedet i tabel 1 for det rigtige sted og forfatter fra billedet i tabel 2.

Man kan vel også sige at jeg gerne vil have importeret felterne sted og forfatter fra tabel 2 til tabel 1.

Håber det giver mere mening.
Avatar billede lorentsnv Nybegynder
31. maj 2007 - 18:11 #3
Jeg er ikke helt sikker på om jeg forstår dig rigtig, men hvis tabel 1 indeholder alle billeder som du har i tabel 2 ,men mangler nogle oplysniger fra tabel 2, kan du eventuelt gøre følgende:

Tilføje de nye felter til tabel 1, evt. ved at højreklikke på tabellen i SQL Enterprise manager, og gå ind i design mode.

Når du har tilføjet felterne, kan du opdatere disse ved at køre følgende SQL:

Update t1
Set sted = t2.sted
, forfatter = t2.forfatter
From Tabel1 t1 left join Tabel2 t2 on t1.billede = t2.billede

Forudsetningen overnfor er at feltet billede er en ID som unikt identificerer det enkelte billede, og at en bestem værdi i feltet billede er identisk i tabel 1 og tabel 2 for samme billede.

Hvis du har records/billeder i tabel 2 som mangler i tabel 1, kan du eventuelt overføre disse med:
Insert into tabel1 (billede,dato,beskrivelse,sted,forfatter)
Select billede,dato,beskrivelse,sted,forfatter
From tabel2
where billede not in(Select billede from tabel1)
Avatar billede kumpel2000 Nybegynder
01. juni 2007 - 00:02 #4
Hvis du lige smider et svar, så er der point. Det var det første eksempel jeg kunne bruge. Det sparede mig for at manuelt behandle 10.000 billeder.
Avatar billede hrc Mester
04. juni 2007 - 22:03 #5
Det er også en syntaks jeg har ledt efter, så tak for din "update" Lorents. Vel indpakket i en transaktion er "record by record" operationer ret hurtige, men kan man lave ovenstående som en enkeltstående kommando, er meget smartere - og det må være noget hurtigere. Hvorfor i øvrigt en "left join"?

.. og hvorfor ikke bare udvide tabel1 med de felter du mangler?
Avatar billede lorentsnv Nybegynder
08. juni 2007 - 08:07 #6
:-)
Avatar billede lorentsnv Nybegynder
08. juni 2007 - 08:11 #7
hrc: Dit spørgsmål med "left join" er meget berettiget.

I Update er der ingen grund til at bruge left join. Det vil være mere effektivt at bruge en inner join, således at kun de records i t1 som har en tilsvarende records i t2 bilver opdateret.
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