|
| MySQL - erstat værdi i udtræk Fra : Kim Emax - ayianapa.~ |
Dato : 11-09-02 14:13 |
|
jeg sidder og prøver at lave et udtræk, hvor feltet status kan indeholde fra
0-5 i værdi, jeg kunne så godt tænke mig at outputtet spytter en mere
signede forklaring ud end 0,1,2 osv, men f.eks. afmeldt, afventer,
bekræftet. Har kigget lidt på if og case, men kan ikke se at det er der, jeg
skal kigge. Spørgsmålet er om det overhovedet kan lade sig gøre?
--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop
| |
Mads Lie Jensen (11-09-2002)
| Kommentar Fra : Mads Lie Jensen |
Dato : 11-09-02 14:44 |
|
On Wed, 11 Sep 2002 15:12:57 +0200, "Kim Emax - ayianapa.dk"
<newsgroup@fjerndette-ayianapa.dk> wrote:
>jeg sidder og prøver at lave et udtræk, hvor feltet status kan indeholde fra
>0-5 i værdi, jeg kunne så godt tænke mig at outputtet spytter en mere
>signede forklaring ud end 0,1,2 osv, men f.eks. afmeldt, afventer,
>bekræftet. Har kigget lidt på if og case, men kan ikke se at det er der, jeg
>skal kigge. Spørgsmålet er om det overhovedet kan lade sig gøre?
Du skal have fat i CASE:
SELECT CASE WHEN status=0 THEN "afmeldt" WHEN status=1 THEN "tilmeldt"
WHEN .... END;
Eller lav din kolonne om til at være af typen ENUM.
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
- nu med link til egne billeder fra Aero-koncerten
med Jean Michel Jarre
| |
Kim Emax - ayianapa.~ (11-09-2002)
| Kommentar Fra : Kim Emax - ayianapa.~ |
Dato : 11-09-02 14:57 |
|
"Mads Lie Jensen" <mads@gartneriet.dk> skrev
> SELECT CASE WHEN status=0 THEN "afmeldt" WHEN status=1 THEN "tilmeldt"
> WHEN .... END;
hmm.. den har jeg prøvet... med ovennævnte syntax. jeg kigger på den igen.
--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop
| |
Kim Emax - ayianapa.~ (11-09-2002)
| Kommentar Fra : Kim Emax - ayianapa.~ |
Dato : 11-09-02 15:04 |
|
"Kim Emax - ayianapa.dk" <newsgroup@fjerndette-ayianapa.dk> skrev i
> hmm.. den har jeg prøvet... med ovennævnte syntax. jeg kigger på den igen.
godt, så virker det, takker
select name, email, CASE WHEN status=0 THEN "afmeldt" WHEN status=1 THEN
"afventer betaling" WHEN status=2 THEN "betalt" END as status FROM tabel;
--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop
| |
Jesper Brunholm (13-09-2002)
| Kommentar Fra : Jesper Brunholm |
Dato : 13-09-02 10:28 |
|
Kim Emax - ayianapa.dk wrote:
> godt, så virker det, takker
>
> select name, email, CASE WHEN status=0 THEN "afmeldt" WHEN status=1 THEN
> "afventer betaling" WHEN status=2 THEN "betalt" END as status FROM tabel;
Er der en grund til at du ikke bare ændrer til et enum-felt: ENUM(
'afventer betaling', 'betalt', 'etc')?
mvh
Jesper Brunholm
| |
Kim Emax - ayianapa.~ (13-09-2002)
| Kommentar Fra : Kim Emax - ayianapa.~ |
Dato : 13-09-02 14:11 |
|
"Jesper Brunholm" <nospam@brunholm-scharff.dk> skrev'
> Er der en grund til at du ikke bare ændrer til et enum-felt: ENUM(
> 'afventer betaling', 'betalt', 'etc')?
lidt for mange steder at rette det i koden bl.a. Jeg bruger generelt ikke
enum, hvis jeg nu ønsker at tilføre endnu et nummer, så skal jeg også i gang
med alter table. Så er jeg lige i skrivende stund i tvivl om man overhovedet
kan smide indexes på enum? Logisk set kan man... så er der storage, "betalt"
fylder mere end "2"
--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop
| |
Jesper Brunholm (13-09-2002)
| Kommentar Fra : Jesper Brunholm |
Dato : 13-09-02 15:08 |
|
Kim Emax - ayianapa.dk wrote:
> "Jesper Brunholm" <nospam@brunholm-scharff.dk> skrev'
>>Er der en grund til at du ikke bare ændrer til et enum-felt: ENUM(
>>'afventer betaling', 'betalt', 'etc')?
>
>
> lidt for mange steder at rette det i koden bl.a. Jeg bruger generelt ikke
> enum, hvis jeg nu ønsker at tilføre endnu et nummer, så skal jeg også i gang
> med alter table.
tjah - jeg laver normalt al min table-opsætning i phpmyadmin
Så er jeg lige i skrivende stund i tvivl om man overhovedet
> kan smide indexes på enum? Logisk set kan man...
Det er jeg ret sikker på
så er der storage, "betalt"
> fylder mere end "2"
nej - det er det fantastiske ved enum: den trækker 1 byte opbevaring pr
værdi op til 255 forskellige værdier i kolonnen, derefter 2 bytes per
værdi. (se < http://www.mysql.com/doc/en/Storage_requirements.html> og
evt < http://www.mysql.com/doc/en/ENUM.html>, jeg fandt det dog i min
MySQL-bog først
mvh
Jesper Brunholm
--
Phønix - dansk folk-musik fra unge musikere - http://www.phonixfolk.dk
| |
Kim Emax - ayianapa.~ (13-09-2002)
| Kommentar Fra : Kim Emax - ayianapa.~ |
Dato : 13-09-02 15:17 |
|
"Jesper Brunholm" <nospam@brunholm-scharff.dk> skrev
> tjah - jeg laver normalt al min table-opsætning i phpmyadmin
uark! Den hader jeg, har set den rette en NULL til "", pludselig var der en
snes domains, der havde mistet deres master domain.. og ham der, der nu
begyndte at pille i databasen med PHPmyAdmin, ja, han fik et drag over
nakken
> nej - det er det fantastiske ved enum: den trækker 1 byte opbevaring pr
> værdi op til 255 forskellige værdier i kolonnen, derefter 2 bytes per
> værdi. (se < http://www.mysql.com/doc/en/Storage_requirements.html> og
> evt < http://www.mysql.com/doc/en/ENUM.html>, jeg fandt det dog i min
> MySQL-bog først
interessant, kigger jeg på lige ved lejlighed...selvom jeg ikke er hip på
enum
--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop
| |
Mads Lie Jensen (13-09-2002)
| Kommentar Fra : Mads Lie Jensen |
Dato : 13-09-02 15:19 |
|
On Fri, 13 Sep 2002 15:11:16 +0200, "Kim Emax - ayianapa.dk"
<newsgroup@fjerndette-ayianapa.dk> wrote:
>> Er der en grund til at du ikke bare ændrer til et enum-felt: ENUM(
>> 'afventer betaling', 'betalt', 'etc')?
>
>lidt for mange steder at rette det i koden bl.a. Jeg bruger generelt ikke
>enum, hvis jeg nu ønsker at tilføre endnu et nummer, så skal jeg også i gang
>med alter table. Så er jeg lige i skrivende stund i tvivl om man overhovedet
>kan smide indexes på enum? Logisk set kan man... så er der storage, "betalt"
>fylder mere end "2"
Fra min udprintede mySQL-manual:
Storage requirements for string types:
ENUM('value1', 'value2', ...) - 1 or 2 bytes, depending on the number of
enumeration values (65535 values maximun).
En INT er til sammenligning 4 bytes.
Der kan godt være index på en ENUM.
Enum er lidt smart syntes jeg - men du'r ikke hvis man f.eks vil have
mulighed for at vise sine data på flere sprog.
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
http://www.gartneriet.dk
- nu med link til egne billeder fra Aero-koncerten
med Jean Michel Jarre
| |
Kim Emax - ayianapa.~ (13-09-2002)
| Kommentar Fra : Kim Emax - ayianapa.~ |
Dato : 13-09-02 15:34 |
|
"Mads Lie Jensen" <mads@gartneriet.dk> skrev
> Fra min udprintede mySQL-manual:
>
> Storage requirements for string types:
>
> ENUM('value1', 'value2', ...) - 1 or 2 bytes, depending on the number of
> enumeration values (65535 values maximun).
>
> En INT er til sammenligning 4 bytes.
>
> Der kan godt være index på en ENUM.
>
> Enum er lidt smart syntes jeg - men du'r ikke hvis man f.eks vil have
> mulighed for at vise sine data på flere sprog.
takker for oplysningen
--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop
| |
|
|