SQL ::: slå ihop

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1

hej.
jag har ett register med kolumnerna for_namn och efter_namn i ett register. Och så har jag i ett annat register endast en kolumn för namn.
Min fråga till er är hur gör jag för att slå ihop innehållet i det första registrets båda kolumner i det andra registrets enda kolumn?

mvh david s

Det är två olika problem om namnen i de två olika tabellerna har något med varann att göra eller inte.

Om jag antar att de inte har något med varann att göra så skapar du en kolumn till i tabell 1 (där förnamn och efternamn är varsin kolumn).

Sedan gör du en Update ungefär så här:

UPDATE Tabell1
SET Namn = Förnamn + ' ' + Efternamn

Normalt så har man en WHERE-klausul efter SET och utan den så körs kommandot på alla poster i databasen.

Sedan kan du kopiera in alla data från Tabell1 in i Tabell2 med:

INSERT INTO Tabell2 (Namn, Adress osv...)
SELECT (Namn, Adress, osv i samma ordning)
FROM Tabell1

Jobba på kopior medans du testar. Du kan skapa en kopia av en tabell med:

SELECT *
INTO Tabell1Copy
FROM Tabell1

Lycka till!

/Ola

Det funkade att skriva:
UPDATE tabell1
SET namn = fnamn

men när jag skulle konkatenera så blev resultatet en nolla i namnkolumnens alla fält

UPDATE tabell1
SET namn = fnamn + ' ' + enamn

kan det vara någon 'dialektal' skillnad när det gäller mysql?

Att det blir noll beror nog på att MySQL skiljer sig lite från Microsoft SQL som jag är van vid.

http://www.mysql.com/doc/en/String_functions.html

Funktionen skall tydligen skrivas så här:

CONCAT(str1,str2,...)
Returns the string that results from concatenating the arguments. Returns NULL if any argument is NULL. May have more than 2 arguments. A numeric argument is converted to the equivalent string form:
mysql> SELECT CONCAT('My', 'S', 'QL');
-> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
-> NULL
mysql> SELECT CONCAT(14.3);
-> '14.3'

/Ola

1
Bevaka tråden