Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Вниз

Как в запросе SELECT можно было несколько полей одного типа объед   Найти похожие ветки 

 
ED   (2003-08-06 11:26) [0]

Как в запросе SELECT можно было несколько полей одного типа объединить в одно поле? (чтобы в QUERY вместо трех полей было одно)


 
HSolo   (2003-08-06 11:28) [1]

Текстовые поля - field1 || field2 || field3
Что-то другое - cast(field1 as varchar(100)) || ...


 
Sergey Masloff   (2003-08-06 11:31) [2]

и помни - если хоть одно из них NULL то и результат NULL


 
Sergey13   (2003-08-06 11:33) [3]

Или объединить их в вычисляемом поле на клиенте.


 
ED   (2003-08-06 11:37) [4]

А как быть если по объединяемым полям field1 || field2 || field3 надо сделать группировку? ( GROUP BY ...)


 
Sergey13   (2003-08-06 11:47) [5]

Тогда мой совет для тебя лучше всего. 8-) В запросе 3 поля и группировка по ним. На клиенте 1 вычисляемое=3 исходным. Его и показывай.


 
ED   (2003-08-06 11:49) [6]

А можно ли в запросе к БД избежать " если хоть одно из них NULL то и результат NULL"?


 
HSolo   (2003-08-06 11:52) [7]

Что значит "избежать"?
Отсеять null-ы?
select ... where not(field1 is null)
Обработать null-ы? Хранимая процедура или UDF


 
ED   (2003-08-06 12:09) [8]

Я имел ввиду:

field1 = "My "
field2 = NULL
field3 = "field"

=================
Результат - "My field"


 
HSolo   (2003-08-06 12:25) [9]

Тогда UDF или хранимка.
Будь у Вас одно поле с возможными null-ами - можно было бы еще union. Но так как этих полей 3 (верно я понимаю?) - комбинаций будет многовато :)


 
MsGuns   (2003-08-06 12:30) [10]

Можно через Union, интегрирующий селекты, "перебирающие" в операторе where все возможные комбинации с NULL


 
HSolo   (2003-08-06 12:42) [11]

Конечно, можно, только для 3 полей - 8 комбинаций. Не многовато будет? :)


 
MsGuns   (2003-08-06 12:46) [12]

>HSolo © (06.08.03 12:42)
>Не многовато будет? :)

Если Родина скажет "НАДО !"
То ED ей ответит "ЕСТЬ !"


;)))


 
NataliK   (2003-08-06 14:52) [13]

Извините,что влезаю, а что такое UDF ?
У меня аналогичная проблема и Union не подойдет. Действительно многовато!


 
HSolo   (2003-08-06 15:18) [14]

User Defined Function - пользовательская функция
Подробнее:
http://www.ibase.ru/develop.htm (как писать)
http://www.ibase.ru/d_udf.htm (готовые)


 
Sergey13   (2003-08-06 15:42) [15]

2ED (06.08.03 11:49)
А чем етбе мой вариант Sergey13 © (06.08.03 11:47) не идет. ИМХО в самый раз. Делай на клиенте с этими полями што хошь.


 
MsGuns   (2003-08-06 16:04) [16]

>Sergey13 © (06.08.03 15:42)

Может, он не пользуется Calc-полями и не знает о событии OnGetText филдов ?


 
Sergey13   (2003-08-06 16:08) [17]

2MsGuns © (06.08.03 16:04)
>Может, он не пользуется Calc-полями и не знает о событии OnGetText филдов ?
Тогда бессмысленно советовать UDF или проверки на NULL. 8-)


 
HSolo   (2003-08-06 16:20) [18]

Не всегда хочется вешать обработку на клиента. Например, что-то типа самодельной генерилки отчетов: в базе лежат тексты запросов, выбираем нужный, скармливаем серверу, полученную выборку выдаем на печать, в Excel или куда там душа пожелает. При таком раскладе желательно, чтобы в выборке все было в готовом виде.


 
MsGuns   (2003-08-06 16:41) [19]

>HSolo © (06.08.03 16:20)
>Не всегда хочется вешать обработку на клиента

Видел когда-нибудь базу на 11 метров с 5 таблицами, в которых было не более 1000 записей всего ? Зато морЯ ХП, вьюшек, генераторов и т.д. Но все (я думаю, процентов 500) - на сервере ! Муть черная !!!

Чувство меры - редкое чувство ;(


 
HSolo   (2003-08-06 16:58) [20]

>MsGuns © (06.08.03 16:41)

>Видел когда-нибудь базу на 11 метров с 5 таблицами, в которых было не более 1000 записей всего ? Зато морЯ ХП, вьюшек, генераторов и т.д. Но все (я думаю, процентов 500) - на сервере ! Муть черная !!!

Ой. И видеть не хочу :( Но мы же не будем впадать в крайности? Ни в такую, как Вы описываете, ни в нечто 1С-подобное, когда все тащится на клиента и там обрабатывается. Разумный баланс требуется :)

> Чувство меры - редкое чувство ;(
Это точно (с) т.Сухов




 
Sergey Masloff   (2003-08-06 19:50) [21]

MsGuns © (06.08.03 16:41)

>Видел когда-нибудь базу на 11 метров с 5 таблицами, в которых >было не более 1000 записей всего ?
Ну и что. Ну я сейчас сделал нечто подобное. Работает очень бычтро. Проблем с обновлением минимум - разослал скрипт 100 Кб и половину логики работы поменял. И не надо сотнями EXE рассылать. А их (установок) у меня сотни четыре. Сейчас. Через полгода возможно 1000 будет. Причем я не говорю что на клиенте ничего не проверяется - проверяется. Но всякие DisplayMask и маски для TMaskEdit тянутся с сервера. Так что .exe постоянно тот же самый (это в идеале пока до конца не всегда получается).


 
Sergey13   (2003-08-07 09:03) [22]

2HSolo © (06.08.03 16:20)
>Не всегда хочется вешать обработку на клиента. Например, что-то типа самодельной генерилки отчетов...

Ну, тут, я думаю, другой случай. Тем паче, обычно, такие "генерилки" действуют по принципу "что видишь то и напечатаю".

2Sergey Masloff ( 06.08.03 19:50) 2HSolo © (06.08.03 16:20)
>Не всегда хочется вешать обработку на клиента. Например, что-то типа самодельной генерилки отчетов...

Ну, тут, я думаю, другой случай. Тем паче, обычно, такие "генерилки" действуют по принципу "что видишь то и напечатаю".

2Sergey Masloff (06.08.03 19:50)
>Ну я сейчас сделал нечто подобное. Работает очень бычтро.
Кто бы сомневался.

>Проблем с обновлением минимум - разослал скрипт 100 Кб и половину логики работы поменял. И не надо сотнями EXE рассылать.

Но надо сотнями этот скрипт рассылать. 8-) Кстати не так уж это хорошо, ИМХО. Если неправильно обновился EXE то он просто работать не будет, а вот если в скрипте чего недоработал, то можно и рабочую базу потерять или испортить основательно.

>А их (установок) у меня сотни четыре. Сейчас. Через полгода возможно 1000 будет.
Бизнес растет. Поздравляю.

> Так что .exe постоянно тот же самый (это в идеале пока до конца не всегда получается).
Вот этого я никогда не пойму наверное. Это что - типа поставил Notepad и с помощью нового файла параметров превратил его в MsWord? 8-)
Все таки "логика работы" это не только структура таблиц и их связей. Это еще и например ввод новых/удаление старых действий юзера => новые формы и т.д. Если все это тянуть при каждом запуске проги с сервака то... А стОит ли?

Я не против серверной обработки, я за... За разумное сочетание с обработкой на клиенте. И "простота обновлений" тут 101-й фактор.
ИМХО что касаемо действительно "логики работы" и не нуждается в действиях опереатора (он только запускает процесс) - то должно на сервере и отрабатываться. Что касается визуализации данных (в широком смысле) - пусть этим занимается клиент.

ЗЫ: Забавно до чего дошла дискуссия от первоначального вопроса. 8-)


 
Sergey Masloff   (2003-08-07 09:30) [23]

Sergey13 © (07.08.03 09:03)
>Все таки "логика работы" это не только структура таблиц и их >связей. Это еще и например ввод новых/удаление старых действий >юзера => новые формы и т.д. Если все это тянуть при каждом >запуске проги с сервака то... А стОит ли?

Сергей, я думаю на самом деле ты меня понял. Естественно, если появляется действительно НОВАЯ форма то она появляется (Хотя можно мудрить с .dfm в базе и так далее но...). Другое дело если в допустим в результатах отбора появилось еще одно поле. Допустим ищем в справочнике Васю Пупкина, при нахождении показываем список похожих. База выросла и Вась пупкиных там 50 человек. Для отличания нужно еще год рождения показывать. Не изменять же форму в exe?

>Но надо сотнями этот скрипт рассылать. 8-) Кстати не так уж это >хорошо, ИМХО. Если неправильно обновился EXE то он просто >работать не будет, а вот если в скрипте чего недоработал, то >можно и рабочую базу потерять или испортить основательно.
Ну зачем так утрировать? Все же автоматизировано. Скрипт тестируется. Потом при отправке считается контрольная сумма. Когда приходит в целевую точку юзер нажимает 1 кнопку. После этого запускается процесс который:
1) Проверяет текущую версию базы (установлены ли прошлые обновления)
2) Проверяет контрольную сумму присланного скрипта
3) Делает backup базы
4) Прогоняет скрипт
5) Анализирует (возможные) ошибки
6) Если не все OK формирует репорт
Так оно и работает. До последнего времени (пока установок было 200) я вообще этим один занимался, причем этот проект у меня "побочный" (бОльшую часть рабочего времени я занимаюсь не им). А каждая рассылка exe это trouble. Они ж его на кажом клиенте должны поменять, там поменяли там забыли и пойми потом где что ;-)

>Забавно до чего дошла дискуссия
угу





 
Sergey13   (2003-08-07 09:40) [24]

2Sergey Masloff ( 07.08.03 09:30) 2Sergey Masloff (07.08.03 09:30)
О вкусах спорить трудно и бесполезно.
"Ты и я, мы оба правы, правы, ох как правы" (с) Алла Пугачева.
8-)


 
Sergey Masloff   (2003-08-07 09:56) [25]

Sergey13 © (07.08.03 09:40)
>О вкусах спорить трудно и бесполезно.
Так мы вроде и не спорим. Ты сказал что нужен компромисс между клиентом и сервером и я согласился. Добавив только что компромисс он разный бывает в каждом конкретном случае. Я пока золотой середины не нашел... Делал и (почти) все на клиенте и (почти) все на сервере. И то хорошо и то неплохо...


 
Danilka   (2003-08-07 11:14) [26]

Sergey Masloff ( 06.08.03 19:50) Sergey Masloff (06.08.03 19:50)
На счет счет сотен клиентов, у нас эта проблема решена тем, что екзешник и все дополнительные файлы: бпл-ки, может еще что, лежит в базе.
А у клиента сначала запускается загрузчик, который сверяет файлы в базе с файлами на клиенте, если есть более позние версии на сервере, то он их закачивает, после чего запускает основную программу.
В принципе, так сделано у крупных клиентов, позволяет обновлять ПО по-инету, а у себя попроще (и, возможно, удобнее): последняя скомпиленая версия лежит на CVS-ке, как правило, запускаешь батник который очень шустро сверяет файлы на CVS-ке с тем что лежит у меня на диске, закачивает последние версии измененых файлов и потом только запускает саму программу.


 
Danilka   (2003-08-07 11:15) [27]

Sergey Masloff
ps. Тебе ник вернули, или ты просто такой хитрый? :))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.011 c
11-1359
CooL
2002-12-23 16:04
2003.09.01
Thread, ну не пойму я!


14-1547
Кен
2003-08-07 02:06
2003.09.01
Нашёл хтмл-вирус. Как защитить от него ИЕ6 ?


3-1314
gsvserg
2003-08-08 15:25
2003.09.01
Возможно ли сделать такой запрос?


3-1301
DarkFiend
2003-08-06 18:13
2003.09.01
не хочу БДЕ!!!


3-1281
Lamer_of_Delphi
2003-08-11 10:29
2003.09.01
Как получить значение ключевого поля последней записи?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский