|
|
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Мне нужно составить запрос следующего типа. Конечно синтаксис не такой, я пишу, просто чтобы было понятно Select a,b,c,cot = begin if a= 15 then cot*2 if b=5 then cot*5 id c="w" then cot / 5 end Пытался воспользоваться Case не получается, т.к. он выполняет только одно условие. А мне нужно, чтобы если все три условия верны, то Cot пересчиьтывался бы согласно этим условиям. Помогите пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 10:54:03 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
сделай три вычислиямых поля ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 10:57:44 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Если у Вас SQL 2000, то можно использовать UDF. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 11:08:14 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Зря ты так на Case - работает он... Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 11:39:36 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Спасибо, Николай! Я просто не так Case использовал. Я его написао один раз, а потом when, when Вот он у меня и выбиральодно условие, а так сделать недодумался.... СПАСИБО!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 11:45:17 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Нет. проглядел. Все равно не получается. В этом примере, если а=15, то в другие условия по else он уже не выполнит, а мне нужно чтобы все три проверил. А по поводу предложения jimmers, у меня слишком большой запрос, и так сделать будет наверное неудобно. Я здесь написал только пример. Запрос очень большой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 11:55:00 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Я так понимаю у тебя запрос большой получается, потому что значений много которые могут принимать a b c. Так создай таблицу, загони туда Поля Код: plaintext 1. 2. 3. 4. 5. 6. делай join этой таблицы и выбирай необходимый коэффициент! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:15:52 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Я не понимаю, чем не подходит CASE? Он выполняет все условия записанные в нем по очереди до первого ИСТИНА. Все что остается, это логически правильно записать эти условия: SELECT [a], , [c], [cot] = CASE WHEN a=15 and b=5 and c="w" THEN cot = ... WHEN b=5 and c="w" THEN cot = ... WHEN a=15 and b=5 THEN cot = ... WHEN a=15 and c="w" THEN cot = ... WHEN a=15 THEN cot = ... WHEN b=5 THEN cot = ... WHEN c="w" THEN cot = ... END Разве этого не достаточно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:23:34 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Нет запрос большой не от того, что много вариантов значений. Просто запутанный запрос. Ну ладно, попробую как предложил jimmers. Страшно только.... А может все-таки есть путь по-легче? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:25:22 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Да,PeterSV наверное это достаточно... А это ничего, что так много условий? Каких-нибудь отрицательных последсвий не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:27:31 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
А ты привел-бы весь запрос с условиями - может и найдется полегче! А то получается: - Мне нужен автомобиль с зеркалом заднего вида! - Вот запорожец! - Да не, мне что-б ездил быстро! - Тогда BMW - А мне по бездорожью! - Pajero возьмите! - И что-б с комфортом... Сразу задачку опиши всю! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:29:33 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Это выдержка из Help для SQL2000. По моему очень похоже. Если нет, то смотри Help по Case. Там есть примеры. USE pubs GO SELECT 'Price Category' = CASE WHEN price IS NULL THEN 'Not yet priced' WHEN price < 10 THEN 'Very Reasonable Title' WHEN price >= 10 and price < 20 THEN 'Coffee Table Title' ELSE 'Expensive book!' END, CAST(title AS varchar(20)) AS 'Shortened Title' FROM titles ORDER BY price GO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:38:47 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Я конечно могу написать.... Неудобно как-то... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Как видно, получается очень много условий... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:46:50 |
|
||
|
Помогите пожалуйста составить запрос.
|
|||
|---|---|---|---|
|
#18+
Дело в том, что в этих вычислениях нет никакой общей логики! Порядок совершенно непредсказуемый! По этой причине надо либо функцию/процедуру ваять! Либо запрос большой писать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 12:50:56 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3370&tid=1818533]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 217ms |
| total: | 364ms |

| 0 / 0 |
