# Expression Manager big 'if' list

7 months 1 week ago #170864 by redbeard
Hi,

Thank you for taking the time to take a look at my question.

I have a question which asks users to pick a choice from a drop down list with 21 answers.
Depending on the answer, I want to give a score between 1 and 3. (score to be saved in DB)

I think it's possible to do this with a long 'if' statement, something like this (I have only put in the first 2 of 21 answers here):
`{if(Q8 == 'AGRICULTURE, FORESTRY AND FISHING', '1', if(Q8 == 'MINING AND QUARRYING', '2', '3' ))}`
1. Is there a better way of doing this than a long if statement?
2. The code above doesn't work - I have tried with and without the '
3. Rather than using the answer text in the Expression, is it possible to use the Answer code?

Many thanks for any help on this

7 months 1 week ago #170865 by Joffm
Hi,
of course, you have to use the code.
And with only three different scores, it is something like:

{if(Q8==1 or Q8==3 or Q8==13,1,if(Q8==2 or Q8==4 or Q8==12,2,3))}

Best regards
Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: redbeard

7 months 1 week ago #170901
Yes , you can manual.limesurvey.org/Expression_Manager#Conditional_Equations (see manual.limesurvey.org/images/1/1f/Tailoring9.jpg )

But with a lot of if, you can do someting like this :
```{join(
if(Q8==1 or Q8==3 or Q8==13,1,''),
if(Q8==2 or Q8==4 or Q8==12,2,''),
if(Q8==1 and Q8==3 and Q8==13 and Q8==2 and Q8==4 and Q8==12)
)}```

Assistance on LimeSurvey forum and LimeSurvey core development are on my free time.
I'm not a LimeSurvey GmbH member, professional service on demand (or search sondages pro).
An error happen ? Before make a new topic : remind the Debug mode .
The following user(s) said Thank You: redbeard