![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Использование русских названий в тексте SQL-запроса.
Kostafey © (2007-05-05 21:08:00)Прошу помощи мастеров.
Возможно задача имеет лучшее решение, кроме того,
хотел бы узнать корректность своего варианта.
Имеется ряд запросов, например (привожу укороченный вариант):
SELECT
Subject.Familiya as [Фамилия],
Location.Tip as [Тип страны]
FROM
Subject, Location
WHERE
Subject.S_L_id = Location.L_id
Получается русские названия полей хранятся в самих же запросах
как псевдонимы.
Все эти запросы используются сами по себе, но кроме того
каждый из них используется и как вложенные запросы, например:
select a.[Тип страны], count(*) as [Количество]
from (
SELECT
Subject.Familiya as [Фамилия],
Location.Tip as [Тип страны]
FROM
Subject, Location
WHERE
Subject.S_L_id = Location.L_id
) a
group by a.[Тип страны]
Что мне в этом не нравится, так это то, что в тексте запроса используется
русский псевдоним a.[Тип страны].
Это, как мне кажется, не совсем красиво.
Не возникнут ли проблемы с этим на других PC ?
С другой стороны, держать массив строк с метками полей только ради этого
неудобно. Держать 2 списка запросов, где каждая пара на 95% повторяется
тоже неудобно.
Вот если бы можно было бы задавать несколько псевдонимов полю или обращатся к нему
по его первоначальному названию.
Так вот вопрос: корректно ли использовать русские названия в тексте SQL-запроса?
СУБД Access, ADO.
Kostafey (2007-05-06 17:07:00) [1]Все, исправил.
Всем спасибо.
Sergey Masloff (2007-05-06 15:43:00) [2]Johnmen © (06.05.07 15:38) [21]
В этом смысле таки да.
Kostafey (2007-05-06 15:43:00) [3]Да... сколько человек столько и мнений...
совсем с толку сбили...
Johnmen (2007-05-06 15:38:00) [4]
> Sergey Masloff (06.05.07 10:45) [19]
Это всё оправдано. Но оправдано только ресурсоёмкостью переделывания. Потому, что изначально было не продумано. Были смешены базовые точки проектирования - хранение(способ хранения в части имён) и отображение.
И я не говорю, что данный способ нежизнеспособен или неработоспособен. В отдельных частных случаях.
Я говорю ТОЛЬКО о том, что национальные символы в SQL в качестве конструкций языка, в качестве лексем и т.д. и т.п. является НЕКОРРЕКТНЫМ.
Anatoly Podgoretsky (2007-05-06 13:14:00) [5]> Германн (06.05.2007 02:49:14) [14]
> Германн © (06.05.2007 02:49) [14]
> Знает ли кто какой-то язык, у которого буква попала бы на код 255?
Сплошь и рядом. Открой таблицу символов в Виндоус и посмотри.
яяяя5мm=ЄняM4яM\x0чэ5\xBї\x5\x4\xFДуN<\xFЭ?
Sergey Masloff (2007-05-06 10:45:00) [6]Johnmen © (06.05.07 00:22) [2]
>> корректно ли использовать русские названия в тексте SQL-
>> запроса?
>Нет.
Не все так однозначно. Приведу навскидку 2 ситуации
1) У меня да наверное почти у каждого накоплена коллекция запросов - "утилит" скажем статистика сессии, динамика ввода-вывода и другие данные из системных таблиц. Выполняю я их из SQL*Plus и иногда результат нужно кому-нибудь послать. Форматнуть вывод в HTML это одна команда и 0.1 сек. времени. Переименовывать поля (а часто и результаты всяческих обработок) это уже долго а придется делать постоянно. Поэтому все результаты заранее с русскими псенвдонимами
2) Множество текущих отчетов завернуты как хранимые процедуры возвращающие курсор. Пользуются ими клиентские приложения двух десятков типов - и веб-сервисы (в том числе чужие) и толстые клиенты и тонкие HTML клиенты и еще фиг знает кто. Писать во всех них преобразование заголовков (и менять потом) - лишние проблемы. Точно такде курсор идет с русскими заголовками полей. Работает как часы. Альтернативные пути решения мне известны, но этот способ вполне работоспособен и имеет право на жизнь даже не ИМХО
Зюзя (2007-05-06 08:09:00) [7]Ребята, вы, наверное, файлы все также продолжаете именовать в формате 8.3? Да?
P.S. У-у-у, динозавры...
sniknik (2007-05-06 03:25:00) [8]> да и ран-тайм тоже наверное смыла нет?
конечно нет. они сами создаются... раз уж хочется в рантайм русские названия назначать делай это в afteropen (когда они уже создались) и все.
Германн (2007-05-06 03:05:00) [9]
> Kostafey © (06.05.07 02:56) [15]
>
> > Да. Да, наверно. Да, но очень стрёмно. Да, "но уж лучше
> > Вы к нам" :)
> > Уж сколько было геморроев с русским языком в Дельфи!
>
> Лучше вовремя внести изменения при проектировании, чем потом
> перелопачивать исправно работающий код.
> Спасибо, начну с утра переделывать (благо, пока немного).
>
>
Правильно сделаешь, имхо.
> > Кстати. Знает ли кто какой-то язык, у которого буква попала
> > бы на код 255?
>
> Не знаю а что? Код как код..
>
Для некоторых версий Дельфи, наличие такого кода в тексте программы - это "красная тряпка"! Точнее в начале текста программы. Ещё точнее - не помню. :( Склероз, блин.
Kostafey (2007-05-06 02:56:00) [10]> Да. Да, наверно. Да, но очень стрёмно. Да, "но уж лучше
> Вы к нам" :)
> Уж сколько было геморроев с русским языком в Дельфи!
Лучше вовремя внести изменения при проектировании, чем потом
перелопачивать исправно работающий код.
Спасибо, начну с утра переделывать (благо, пока немного).
> Кстати. Знает ли кто какой-то язык, у которого буква попала
> бы на код 255?
Не знаю а что? Код как код..
Германн (2007-05-06 02:49:00) [11]
> Kostafey © (06.05.07 02:25) [12]
>
> > Не понял. Чем тебя не устраивает displaylabel упомянутый
> > в sniknik © (06.05.07 01:27) [4]?
>
> Запросы хранятся в файлах. Было бы дико (как мне кажется)
> держать тексты запросов
> отдельно от русских названий полей для результатов запросов.
>
>
Да. Да, наверно. Да, но очень стрёмно. Да, "но уж лучше Вы к нам" :)
Уж сколько было геморроев с русским языком в Дельфи!
Кстати. Знает ли кто какой-то язык, у которого буква попала бы на код 255?
Kostafey (2007-05-06 02:26:00) [12]> Ага, понял. А о проперти Fields у TDataSet ты не слышал?
:)) слышал
Kostafey (2007-05-06 02:25:00) [13]> Не понял. Чем тебя не устраивает displaylabel упомянутый
> в sniknik © (06.05.07 01:27) [4]?
Запросы хранятся в файлах. Было бы дико (как мне кажется) держать тексты запросов
отдельно от русских названий полей для результатов запросов.
Т.е. нужно и эти данные хранить в том же файле вместе с запросами.
А уж потом, считав данные файла, конечно присваивать displaylabel значения массива.
Германн (2007-05-06 02:25:00) [14]
> Kostafey © (06.05.07 02:19) [9]
>
> > я не использую. предпочитаю давать русское название в
> дескрипторе
> > поля (displaylabel).
>
> Так не получится в этой задаче,
> т.к. один и тот же набор данных будет обрабатывать разные
> запросы, т.е.
> дизайн-тайм создавать TField невозможно, да и ран-тайм тоже
> наверное смыла нет?
>
Ага, понял. А о проперти Fields у TDataSet ты не слышал?
Германн (2007-05-06 02:20:00) [15]
> Kostafey © (06.05.07 02:14) [8]
>
> > Русские названия использовать только в интерфейсе программы.
>
> > И нигде более!
>
> Понимяу.
> Значит использовать дополнительно массив для хранения названий
> полей?
>
Не понял. Чем тебя не устраивает displaylabel упомянутый в sniknik © (06.05.07 01:27) [4]?
Kostafey (2007-05-06 02:19:00) [16]> я не использую. предпочитаю давать русское название в дескрипторе
> поля (displaylabel).
Так не получится в этой задаче,
т.к. один и тот же набор данных будет обрабатывать разные запросы, т.е.
дизайн-тайм создавать TField невозможно, да и ран-тайм тоже наверное смыла нет?
Kostafey (2007-05-06 02:14:00) [17]> Русские названия использовать только в интерфейсе программы.
> И нигде более!
Понимяу.
Значит использовать дополнительно массив для хранения названий полей?
> разве не лучше?
> SELECT s.Familiya, l.Tip
> FROM Subject s
> IHHER JOIN Location l ON s.S_L_id = l.L_id
Согласен, лучше, никак переучиться не могу, привычка...
Германн (2007-05-06 02:06:00) [18]
> Kostafey © (06.05.07 02:04) [6]
>
> Значит русские названия хранить вне SQL ?
>
Русские названия использовать только в интерфейсе программы. И нигде более!
Kostafey (2007-05-06 02:04:00) [19]Значит русские названия хранить вне SQL ?
Германн (2007-05-06 01:49:00) [20]
> sniknik © (06.05.07 01:27) [4]
>
> я не использую. предпочитаю давать русское название в дескрипторе
> поля (displaylabel). запросы короче и понятнее получаются.
> ..
Поддерживаю. Русские названия - только в визуальных компонентах. Во "внутренностях!" только родные. И не только в SQL. Вон немцы, имхо, названия функций и переменных дают порой на немецком. Так ведь прочитать не возможно! :)