WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   MySQL - fält som rader (https://www.wn.se/forum/showthread.php?t=25525)

andi 2007-12-07 14:34

Finns det ett sätt att transformera data i en tabell så att man får alla fält i en enda kolumn. Alltså om jag väljer en rad så vill jag ha alla fält i den raden på varsin rad i en enda kolumn. Jag vill inte skapa en ny tabell utan bara ha resultatet från en fråga i den formen.

fors 2007-12-07 19:31

Citat:

Originally posted by andi@Dec 7 2007, 14:34
Finns det ett sätt att transformera data i en tabell så att man får alla fält i en enda kolumn. Alltså om jag väljer en rad så vill jag ha alla fält i den raden på varsin rad i en enda kolumn. Jag vill inte skapa en ny tabell utan bara ha resultatet från en fråga i den formen.
Du kan göra det med hjälp av CONCAT-funktionen:
Kod:

SELECT CONCAT(column1, column2, column3) FROM table
Alternativt kan du använda CONCAT_WS om du vill separera kolumnerna med något specifikt tecken. Nu står det ju i texten att du vill spara det här i en ny kolumn, men det gör du ju med en vanlig UPDATE-fråga.

Allltså:
Kod:

UPDATE table SET text_column = CONCAT_WS(';', column1, column2, column3)
EDIT: Jag tror att jag missförstod vad du menade!

tartareandesire 2007-12-07 19:36

Citat:

Originally posted by andi@Dec 7 2007, 15:34

Finns det ett sätt att transformera data i en tabell så att man får alla fält i en enda kolumn. Alltså om jag väljer en rad så vill jag ha alla fält i den raden på varsin rad i en enda kolumn. Jag vill inte skapa en ny tabell utan bara ha resultatet från en fråga i den formen.

Får man fråga vad syftet med det hela är, alltså vad som ska hända och varför?

lubic 2007-12-07 19:50

Tror andi är ute efter en unpivot, alltså att få innehållet från flera kolumner i samma rad som olika rader i en och samma kolumn. Dock vet jag inte exakt hur man gör det på bästa sätt i mySQL.

Anders Larsson 2007-12-07 23:33

Det låter som att du är ute efter "group concat"
http://dev.mysql.com/doc/refman/5.0/en/gro...on_group-concat

dvorak 2007-12-08 01:39

en variant:

SELECT kolumn1 FROM tabell
UNION
SELECT kolumn2 FROM tabell
UNION
SELECT kolumn3 FROM tabell

är det olika datatyper i kolumnerna får du lov att casta alla till samma datatyp

andi 2007-12-08 11:57

Citat:

Originally posted by lubic@Dec 7 2007, 20:50
Tror andi är ute efter en unpivot, alltså att få innehållet från flera kolumner i samma rad som olika rader i en och samma kolumn. Dock vet jag inte exakt hur man gör det på bästa sätt i mySQL.
Ja precis! Nu har jag dock fått reda på att det inte går att göra detta i MySQL på samma smidiga sätt som i andra databaser. Syftet var att visa data från en enda rad i en tabell på ett överskådligare sätt i en windows-applikation utan att behöva koda så mycket.

Ska testa UNION som dvorak föreslog.

Tack för alla svar!

Robert 2007-12-08 18:03

Citat:

Ursprungligen postat av andi
Citat:

Ursprungligen postat av lubic
Tror andi är ute efter en unpivot, alltså att få innehållet från flera kolumner i samma rad som olika rader i en och samma kolumn. Dock vet jag inte exakt hur man gör det på bästa sätt i mySQL.


Ja precis! Nu har jag dock fått reda på att det inte går att göra detta i MySQL på samma smidiga sätt som i andra databaser. Syftet var att visa data från en enda rad i en tabell på ett överskådligare sätt i en windows-applikation utan att behöva koda så mycket.

Ska testa UNION som dvorak föreslog.

Tack för alla svar!

Hmmm, ändra inte på databasdesignen för att få presentationslagret att presentera datat som du vill, det är fel väg att gå (om jag inte missuppfattar dig).

andi 2007-12-08 19:50

Citat:

Originally posted by Robert@Dec 8 2007, 19:03

Hmmm, ändra inte på databasdesignen för att få presentationslagret att presentera datat som du vill, det är fel väg att gå (om jag inte missuppfattar dig).

Det är inte designen jag vill ändra på, bara få ut data med en fråga formatterat på ett annat sätt än som det lagras i tabellen, typ som när man använder CONCAT.

Robert 2007-12-09 00:27

Citat:

Ursprungligen postat av andi
Citat:

Ursprungligen postat av Robert
Hmmm, ändra inte på databasdesignen för att få presentationslagret att presentera datat som du vill, det är fel väg att gå (om jag inte missuppfattar dig).


Det är inte designen jag vill ändra på, bara få ut data med en fråga formatterat på ett annat sätt än som det lagras i tabellen, typ som när man använder CONCAT.

Du verkar ju vilja ha datat "på höjden" istället för på bredden så att säga, och detta endast för att slippa loopa igenom kolumnerna och istället loopa igenom rader (du skrev att det blev mindre kod...). Jag vidhåller isåfall att du inte ska behöva ställa en annan typ av fråga till databasen, utan låta PRESENTATIONSlagret fixa hur det ser ut för slutanvändaren. Men jag ber om ursäkt om jag fortfarande missuppfattar dig... :)


Alla tider är GMT +2. Klockan är nu 09:39.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson