Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование русских названий в тексте SQL-запроса.


Страницы:   1 2

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. Вон немцы, имхо, названия функций и переменных дают порой на немецком. Так ведь прочитать не возможно! :)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо