Vinnaren i pepparkakshustävlingen!
2009-03-16, 09:08
  #1
Medlem
voyager838s avatar
Vad skulle vara det bästa sättet att slå ihop flera tabellers kolumner till en ny tabell i SQL Server (T-SQL)

Många verkar tycka JOIN eller UNION är sätt, jag behöver synka
datan i varje tabells datumtid fält med alla andras så rätt värden i de olika tabellerna hamnar på rätt rad i förhållande till datumtiden i den nya tabellen.

Hur JOIN:ar man flera tabeller på en gång? Är detta verkligen det mest effektiva sättet?
Citera
2009-03-16, 13:25
  #2
Medlem
googlevistas avatar
JOIN och UNION ger två olika resultat här. Vill du slå ihop ett antal snarlika tabeller till en enda tabell, där varje originalpost blir en egen post i den nya tabellen? Då använder du UNION:

Vill du slå ihop flera tabeller till en tabell, där posterna ska slås ihop "på längden" i den nya tabellen (varför vill man göra det?)? Då måste du JOIN:a ihop tabellerna på nåt nyckelfält. Du nämner "DatumTid"-fält så då skulle det kunna se ut nåt sånt här:
Detta förutsätter att det finns (högst) en post i varje tabell med samma DatumTid, och att Tabell_1 innehåller alla tillgängliga "DatumTid"-värden, annars blir det fel.

Kan du posta lite exempeldata så blir det lättare att hjälpa till och förstå vad det är du vill åstadkomma.
Citera
2009-03-16, 13:32
  #3
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av voyager838
Hur JOIN:ar man flera tabeller på en gång?
http://en.wikipedia.org/wiki/Join_(SQL)

Citat:
Är detta verkligen det mest effektiva sättet?
Ja.
Citera
2009-03-17, 08:39
  #4
Medlem
voyager838s avatar
Citat:
Kan du posta lite exempeldata så blir det lättare att hjälpa till och förstå vad det är du vill åstadkomma.

Tabell 1

DatumTid | Kol 1 | Kol 2 | Kol 3
2007.01.01 00:00 | 4.4 | 9 | 5
2007.01.02 00:00 | 2.5 | 11 | 7.2

Tabell 2

DatumTid | Kol 4| Kol 5 | Kol 6
2007.01.01 00:00 | 1.3 | 9 | 5
2007.01.02 00:00 | 7.5 | 4 | 9

Tabell 3

DatumTid | Kol 7 | Kol 8 | Kol 9
2007.01.01 00:00 | 0 |4 |1
2007.01.02 00:00 | null | null|null
2007.01.03 00:00 | 3 | 1 |1

Där Kol n är beteckning på kolumnnamn.

Sedan ska dessa slås ihop till en ny tabell med alla kolumner
synkat med datumtids fältet

NyTabell
DatumTid | Kol 1 |Kol 2 |Kol 3 |Kol 4 |Kol 5 |Kol 6 |Kol 7 |Kol 8 |Kol 9
2007.01.01 00:00 | 4.4 | 9 | 5 | 1.3 | 9 | 5| 0 |4 |1
2007.01.02 00:00 | 2.5 | 11 | 7.2| 7.5 | 4 | 9 | null | null|null
2007.01.03 00:00 |null |null|null|null|null|null| 3 | 1 |1

Det är betydligt fler tabeller med betydligt många fler kolumner som ska slås ihop till en ny.
__________________
Senast redigerad av voyager838 2009-03-17 kl. 08:56.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback