Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SQLVar TableAlias / 8 сообщений из 8, страница 1 из 1
05.10.2017, 16:42
    #39531636
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
Есть запрос, в котором одна таблица джойнится дважды. Пусть будет типа такого
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
  mod1."NAME",
  mod2."NAME"
FROM
  moduls mod1,
  moduls mod2


Вопрос - можно ли как-то получить алиасы таблиц для двух полей? Сами таблицы можно получить через
Код: sql
1.
SqlVar.RelName

но для этих полей RelName одинаков. Можно ли как-то выкусить именно алиасы таблиц

Сервер Interbase 2009/XE3

С уважением, Vasilisk
...
Рейтинг: 0 / 0
05.10.2017, 16:58
    #39531664
KreatorXXI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
_Vasilisk_,

Вообще не понятно. Откуда выкусить? Алиасы работают только в запросах.
...
Рейтинг: 0 / 0
05.10.2017, 17:07
    #39531683
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
KreatorXXI. Откуда выкусить?Из подготовленного стейтмента
Код: sql
1.
2.
3.
IBSQL1.SQL.Text := .......
IBSQL1.Prepare;
ShowMessage(IBSQL1.Fields[0].SqlVar.RelName);
...
Рейтинг: 0 / 0
05.10.2017, 17:08
    #39531685
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
_Vasilisk_,

не проще ли в самом запросе нормальные алиасы полям давать?
...
Рейтинг: 0 / 0
05.10.2017, 17:09
    #39531686
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
_Vasilisk_но для этих полей RelName одинаков. Можно ли как-то выкусить именно алиасы таблиц

Sqlvar.AliasName?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2017, 17:17
    #39531703
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
Dimitry SibiryakovSqlvar.AliasName?..Там алиас поля
Код: sql
1.
2.
3.
4.
5.
6.
SELECT
  mod1."NAME" AS "MOD1_NAME",
  mod2."NAME" AS "MOD2_NAME"
FROM
  moduls mod1,
  moduls mod2


Для первого поля возвращаются такие значения
ПолеЗначенияRelNamemodulsSqlNameNAMEAliasNameMOD1_NAME
Можно ли добраться до mod1? Или хотя бы до mod1."NAME"
...
Рейтинг: 0 / 0
05.10.2017, 17:51
    #39531730
чччД
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
_Vasilisk_, э... ну, вот костыль (направление):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
uses SqlTxtRtns;
...
var
  fFields: TStringList;
  fParser: TSQLParser;
  fDotPos: Integer;
begin
...
  fParser := TSQLParser.Create(pFIBQuery1.SQL.Text);
  fFields := TStringList.Create;
  try
   fFields.Text := fParser.GetFieldsClause;
   fDotPos := Pos('.', fFields[0]);
   if fDotPos > 0 then
     ShowMessage(Copy(fFields[0],1, fDotPos - 1))
...
Рейтинг: 0 / 0
05.10.2017, 20:15
    #39531790
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLVar TableAlias
чччДну, вот костыльТак и я умею :)

Вопрос возник по мотивам MySQL
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
typedef struct st_mysql_field {
  char *name;                 /* Name of column */
  char *org_name;             /* Original column name, if an alias */
  char *table;                /* Table of column if column was a field */
  char *org_table;            /* Org table name, if table was an alias */
  char *db;                   /* Database for table */
  char *catalog;	      /* Catalog for table */
  char *def;                  /* Default value (set by mysql_list_fields) */

Думал и в IB есть нечто подобное
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / SQLVar TableAlias / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]