Avatar billede Lucky_Mik Nybegynder
15. december 2009 - 08:30 Der er 8 kommentarer og
2 løsninger

SELECT - flere kolonner til en kolonne

Jeg har en tabel med 2 kolonner email1 og email2. Nogle rækker indeholder en værdi for både email1 og email2, nogle rækker indeholder kun en af værdierne, nogle rækker indeholder ingen af værdierne.

"SELECT email1  AS email FROM user_info"
henter alle email1 som kolonnen email

Jeg vil gerne hente både email1 og email2 - samlet i kun  én kolonne kaldet email.

Nogen der kan hjælpe ?
Avatar billede Lucky_Mik Nybegynder
15. december 2009 - 08:41 #1
Og helst uden brug af UNION
15. december 2009 - 09:38 #2
Hvad er der galt med UNION?

Jeg lavede en tabel (kaldt lucky_mik) med det foelgende indhold:

email1  email2 
mail11  mail12
        mail22
mail31  mail32
mail41 
        mail52

og den foelgende query:

SELECT email1 AS mail FROM lucky_mik WHERE email1 != ''
UNION
SELECT email2 AS mail FROM lucky_mik WHERE email2 != ''

hvilket gav dette resultat, hvilket er hvad jeg forstaar du vil have:

mail 
mail11
mail31
mail41
mail12
mail22
mail32
mail52
Avatar billede 2c Nybegynder
15. december 2009 - 09:54 #3
Der er vel ikke noget der hedder coalesce i mysql?

SELECT coalesce (email1, email2) email FROM user_info
15. december 2009 - 10:54 #4
2c - jeg kikkede lige, coalesce bestaar, men din select synes ikke at give det oenskede resultat.  Da jeg indsaette det i min test-kode fik jeg foelgende resultat:

email 
mail11
 
mail31
mail41
Avatar billede mbagge Nybegynder
15. december 2009 - 11:30 #5
coalesce selecter den første ikke-null værdi.
Hvis du vil have begge felter ud kan du i mysql bruge concat eller concat_ws (with seperator)

select concat(email1, email2) from.... = 'email1email2'
select concat_ws(', ', email1, email2) from.... = 'email1, email2'
Avatar billede 2c Nybegynder
15. december 2009 - 11:39 #6
Var vidst lidt hurtigt med mit svar. Tror sq ikke der er koffein i den nye kaffe på mit arbejde.

Som Cristian siger: Hvad er der galt med UNION? Det ville være en fin løsning til problemet.
Avatar billede Lucky_Mik Nybegynder
15. december 2009 - 11:51 #7
Ja, jeg kan godt lave det med UNION, men i forvejen har jeg flere UNIONs, det gør koden svær at læse og kræver flere SELECT(som tager tid), og jeg tænkte, at det måtte være muligt at lave det som en SELECT-sætning. Måske v.h.a. alias'er ?
Avatar billede 2c Nybegynder
15. december 2009 - 11:58 #8
Jeg er næsten sikker på at din union ikke vil tage mere tid, end den behandling du er nødt til at foretage af datene ellers. Og den er jo heller ikke mere kompliceret, end hvis du skal til at lave den behandling med SQL.
Avatar billede Lucky_Mik Nybegynder
16. december 2009 - 08:41 #9
Mange tak for jeres kommentarer.

Jeg kikker på det når jeg får tid(der er lige dukket noget andet op), måske bliver det UNION, måske mbagges forslag.

Er der andre end mbagge der vil have point, så læg et svar.
16. december 2009 - 08:50 #10
Svar fra Christian_Belgien.
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