A CASE expression serves a role similar to IF-THEN-ELSE in other programming languages.
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
|
|||
nesco,
|
|||
карма: 25 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Tad, а примерчик запроса есть, на любых фонарных данных
|
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Где-то тут вроде Alexbootch выкладывал. Там что-то про Дату. Вернее про дни недели.
Вот нашел:
------------ Дoбавленo в 19.15: Хотя вроде и так можно (проверить надо)
|
|||
карма: 25 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
А вместо значения я могу запрос выставить после THEN
|
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Работает. |
|||
карма: 25 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Tad, а idd это что -- виртуальный столбец
А можно ли присвоить значение некой переменной, мне интресно как это делается |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
idd - это и есть переменная с результатом SELECt-а в скобках.
Выше во втором примере то что тебе нужно проверка на - если больше то минус что-то. в idd (tab1.id-1) если (tab1.id>2) А можно и так:
|
|||
карма: 25 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Tad, те этот idd я могу использовать как индекс выборки для следующей таблицы, правильно я понимаю
|
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
но ты не забывай, что idd меняется от строки к строке WHEN tab1.id >2 THEN tab1.id-1
Если ты его запомнишь в программе, то применяй. А если по честному, то я не понял, что ты имеешь ввиду: 1 писал(а): использовать как индекс выборки для следующей таблицыили для следующего SELECT ? 2 писал(а): использовать как индекс для следующей выборки из таблицы |
|||
карма: 25 |
| ||
Голосовали: | nesco |
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Да у меня разные варианты возникают по мере чтения, буду проверять разные. Спасибо, что подсказал, хоть теперь знаю, в какую сторону копать надо
------------ Дoбавленo в 21.46: Tad писал(а): но ты не забывай, что idd меняется от строки к строке WHEN tab1.id >2 THEN tab1.id-1Мне нужна разовая выборка из разных таблиц в зависимости от индекса и дополнительного внешнего параметра |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco, если ещё интересует загрузка в blob, то загляни сюда (использую при работе в Delphi)
http://forum.antichat.ru/thread135998.html |
|||
карма: 25 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Tad писал(а): если ещё интересует загрузка в blobОюязательно гляну. Хотел еще спросить -- назначенная переменная, предположим idd, распространяется только на текущий запрос или на всю транзакцию, те могу ли я ее использовать в следующем последовательном запросе одного элемента |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
nesco писал(а): Хотел еще спросить -- назначенная переменная, предположим idd, распространяется только на текущий запрос nesco, ещё есть такой ход Командой CREATE TABLE ... AS SELECT .... Применяю часто. Удобно и быстро работает.можно создать и заполнить временную вспомогательную таблицу БД на основе результата SELECT. Таблица имеет такое же число столбцов, строк, возвращенных AS SELECT. Имя каждого столбца такое же, как название соответствующего столбца в результирующем наборе AS SELECT. |
|||
карма: 25 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Tad писал(а): Удобно и быстро работаетНадо полагать, что эта промежуточная таблица оформляется в памяти, вот и быстро работает. Но для моей простенькой задачи эта прмежуточная таблица -- слишком круто. К тому же, мне нужно только одно результирующее значение по выбранным параметрам. Я тут готовую схемку накидаю, когда набивку данных закончу, глянешь, может чего ты бы сделал по-другому, интересно будет послушать твое мнение |
|||
карма: 22 |
|
Ответов: 16884
Рейтинг: 1239
|
|||
Ну да. И ещё учти, что в эту таблицу отбираешь только то, что тебе нужно. Таблица получается "короткая". У меня в пределах 100-200 строк из исходной на полмиллиона записей .
|
|||
карма: 25 |
|