31. maj 2007 - 11:54Der 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.
Ø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.
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.
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)
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?
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.
Synes godt om
Ny brugerNybegynder
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.