условие SQL-запроса - PullRequest
       0

условие SQL-запроса

1 голос
/ 14 февраля 2011

У меня есть такой стол

days    discount    
  3      5.00   
  7     10.00   
10     15.00

Цена скидки до 3 дней - 5 рупий. Цена от 4 до 7 - 10 рупий и т. Д. У меня всего нет дней. Если число дней не <4, тогда получите 5,00. если нет дней с 4 по 7, тогда получите 10. Как я могу написать условие в SQL-запросе </p>

Ответы [ 4 ]

2 голосов
/ 14 февраля 2011

Возьмите, например, «6» дней. Вы хотите выбрать все скидки, в которых дни в таблице больше, чем ваши 6 (то есть 7 или 10), а затем получить наименьшее (7).

SELECT discount FROM yourTable
WHERE
days >= '6'
ORDER BY days DESC
LIMIT 1

(Как вы сказали, «3» также имеет скидку, я предполагаю, что «4-7» означает , включая 7. В противном случае удалите = из запроса)

Как уже упоминалось в комментариях, вы должны использовать подготовленные заявления, если можете, поэтому вы должны сделать что-то вроде этого:

SELECT discount FROM yourTable
WHERE
days >= ?
ORDER BY days DESC
LIMIT 1

а затем связать это? в целое число.

1 голос
/ 14 февраля 2011

Вы можете создать и использовать подготовленное утверждение, подобное следующему:

SELECT discount 
FROM myTable 
WHERE days >= ?
ORDER BY days DESC 
LIMIT 1
0 голосов
/ 14 февраля 2011

Вам нужно использовать case case в вашем операторе select.

SELECT CASE numdays 
    WHEN >= 8 THEN 15.0 
    WHEN >= 4 THEN 10.0 
    WHEN < 4 THEN 5.0
    END AS discount
0 голосов
/ 14 февраля 2011

SELECT discount FROM mytable WHERE days > XXXX LIMIT 1 где XXX - количество дней, которое вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...