Avatar billede oergaard Nybegynder
24. maj 2007 - 07:15 Der er 7 kommentarer og
1 løsning

Hvis TOMT eller NULL then?

Pt. henter jeg mine data ud fra min db med følgende SQL streng.
(i ASP dokument)

strSQL = "SELECT nr, beskrvelse, gruppe, billede FROM katalog ORDER BY gruppe"

Set rsVarer = Conn.Execute(strSQL)

I nogle enkelte tilfælde er der ikke nogen billeder, hvilket jeg i db'en har løst ved at skriver "mangler.jpg". Jeg ønsker i stedet, at feltet i db'en er tomt eller null og jeg i min SQL streng sætter rsVarer billede værdien til "mangler.jpg"  hvis feltet skulle være tomt.

Ovenstående kunne selvfølgelig også løses i koden, hvor billedet indsættes, hvilket ikke ville være noget problem. Men da jeg bruger rsVarer flere steder, vil jeg gerne have løsningen på SQL niveau.

Håber der er en der kan hjælpe :-)

//Oergaard
Avatar billede fennec Nybegynder
24. maj 2007 - 08:32 #1
Første skridt er at sætte alle mangler.jpg til at være null:
update katalog set billede=NULL where billede='mangler.jpg'

Så skal du til at bruge ifNull() kommandoen i dine sql:
trSQL = "SELECT nr, beskrvelse, gruppe, IFNULL(billede,'mangler.jpg') FROM katalog ORDER BY gruppe"

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html
Avatar billede 0xffff Nybegynder
24. maj 2007 - 08:37 #2
SELECT nr, beskrvelse, gruppe,CASE WHEN billede = "" THEN 'mangler.jpg' ELSE billede
CASE WHEN isnull(billede) THEN 'mangler.jpg' ELSE billede END as billede
FROM katalog ORDER BY gruppe
Avatar billede oergaard Nybegynder
24. maj 2007 - 09:05 #3
fennec> Er det i di metode muligt, at teste for 2 ting, så jeg kan slippe for update-kommandoen?

0xffff> Der meldes en fejl når jeg bruger denne kode.
Avatar billede fennec Nybegynder
24. maj 2007 - 09:14 #4
Hvis du bruger if() metoden i stedet (er også beskrevet på linket), kan du teste for alle de ting du vil:

trSQL = "SELECT nr, beskrvelse, gruppe, IF(billede is null or billed='','mangler.jpg', billed) FROM katalog ORDER BY gruppe"
Avatar billede fennec Nybegynder
24. maj 2007 - 09:17 #5
Men ville du ikke netop fjerne alle mangler.jpg fra databasen?? Det var sådan jeg forstod dit spørgsmål:

... Jeg ønsker i stedet, at feltet i db'en er tomt eller null og jeg i min SQL streng sætter rsVarer billede værdien til "mangler.jpg"...
Avatar billede 0xffff Nybegynder
24. maj 2007 - 09:19 #6
det har jeg for at skrive SQL ud fra hukommelsen heh.

her kommer testet syntax.

select nr, beskrvelse, gruppe, CASE WHEN (isnull(billede) OR (billede = "")) THEN 'mangler.jpg' ELSE billede = billede
END as billede from katalog
order by gruppe
Avatar billede oergaard Nybegynder
24. maj 2007 - 09:23 #7
Jo det var min fejl.

Jeg ville sikre mig at det også satte billedet til 'mangler.jpg' når det var tomt, men ikke null. Det virker nu med OR i IF sætningen.

Smider du ikke et svar - så du kan få nogle velfortjente point?

//Oergaard
Avatar billede fennec Nybegynder
24. maj 2007 - 09:52 #8
.o) <-- One Eyed Jack
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