Avatar billede vraa Nybegynder
05. september 2006 - 13:47 Der er 8 kommentarer og
1 løsning

Sammensmelte to kolonner fra 2 forskellige tabeller til én koll.

Jeg har følgende 2 tabeller i MS SQL 2005:

Tabel1
Tabel1ID  fornavn1  efternavn1
-------------------------------
1          Troels    Nielsen
2          Per      Hansen

Tabel2
Tabel2ID  fornavn2    efternavn2
----------------------------------
0          Hans      Petersen
1          Karsten  Jensen
2          Benny    Iversen

og vil gerne lave et view med følgende output fra de nævnte tabeller:

viewNavne
fornavn    efternavn
--------------------
Troels    Nielsen
Per        Hansen
Hans      Petersen
Karsten    Jensen
Benny      Iversen


Det ser umiddelbart simpelt ud men kan sgu't hitte ud af det?
Avatar billede lorentsnv Nybegynder
05. september 2006 - 13:53 #1
Select fornavn1, efternavn1 from table1
union all
Select fornavn2, efternavn2 from table2
Avatar billede lorentsnv Nybegynder
05. september 2006 - 13:56 #2
Du kan enten bruge UNION eller UNION ALL.

Hvis du kun bruger UNION får du kun unike records. Dvs. at hvis samme navn findes i begge tabelelr, får du navnet kun én gang. Med UNION ALL får du alle rækker fra begge tabeller.
Avatar billede vraa Nybegynder
05. september 2006 - 14:06 #3
Helt perfekt men mit problem går åbenbart længere end det.
Ovenstående tabel var bare et skrabet eksempel som jeg troede var nok til at løse mit problem. Jeg har to tabeller hvor der er en del kolonner i hver, men som ikke ens. Jeg vil have mit udtryk til at tage alle kolonner fra hver tabel sammensmelte dem som jeg gerne vil have den til at sammensmelte OG automatisk sammensmelte dem som er (via kolonnenavn).
Avatar billede vraa Nybegynder
05. september 2006 - 14:07 #4
"automatisk sammensmelte dem som er" = "automatisk sammensmelte dem som er ens"
Avatar billede teepee Nybegynder
05. september 2006 - 14:08 #5
Du skal bare navngive dine kolonner ens:
Select fornavn1 as fornavn, efternavn1 as efternavn, telefon as telefon from table1
union all
Select fornavn2 as fornavn, efternavn2 as efternavn, phone as telefon from table2
Avatar billede vraa Nybegynder
05. september 2006 - 14:09 #6
hvad så hvis jeg har lidt flere kolonner i den ene af tabellerne end den anden. Dem vil jeg gerne have udtrykket til at tilføje.
Avatar billede sorenpihl Nybegynder
05. september 2006 - 14:19 #7
Du kan bruge:

select fornavn1 as fornavn, efternavn1 as efternavn, 0 as telefon from tabel1
union all
select fornavn1 as fornavn, efternavn1 as efternavn, phone as telefon from tabel2

hvis du har en kolonne i tabel2 ved navn phone, men mangler denne kolonnen i tabel1. I dette eksempel returneres så et 0 som telefon for posterne i tabel1.
Avatar billede vraa Nybegynder
05. september 2006 - 14:51 #8
Fantastisk. Jeg takker for hjælpen :-)
Avatar billede vraa Nybegynder
05. september 2006 - 14:52 #9
Sorry lorentsnv. Der er point til dig her http://www.eksperten.dk/spm/730481
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