Russian Qt Forum

Программирование => Базы данных => Тема начата: Martiro от Май 23, 2007, 09:39



Название: PostgreSQL 7 связь таблиц в базе
Отправлено: Martiro от Май 23, 2007, 09:39
Существует две таблицы:
Код:
      Table "TBL_1"
   Attribute   | Type    |
---------------+----------
tbl_1_numb     |  int    |   -- сквозная нумерация
tbl_1_id       |  int    |
tbl_1_ins      |  text   |

и
Код:
      Table "TBL_2"
   Attribute   | Type    |
---------------+----------
tbl_2_numb     |  int    |    -- сквозная нумерация
tbl_2_txt      |  text   |

Подскажите, как осуществить такой запрос, чтобы значения поля tbl_2_txt были перенесены в поле tbl_1_ins с тем учётом, что tbl_1_id соответствует tbl_2_numb.


Название: PostgreSQL 7 связь таблиц в базе
Отправлено: Вудруф от Май 23, 2007, 11:04
update tbl_1 as t1
set
  tbl_1_ins = (select tbl_2_txt from tbl_2 where tbl_2_numb = t1.tbl_1_id)
where ...


Название: PostgreSQL 7 связь таблиц в базе
Отправлено: Martiro от Май 23, 2007, 12:41
Вудруф, спасибо большое!
В моём случае оператор as не прошёл, сделал так:
Код:
update tbl_1
set
tbl_1_ins = (select tbl_2_txt from tbl_2 where tbl_2_numb = tbl_1.tbl_1_id);


Название: PostgreSQL 7 связь таблиц в базе
Отправлено: Вудруф от Май 24, 2007, 08:43
Пардон, as нужно для псевдонимов столбцов при выборке.
Нужно просто:
Код:
update tbl_1 t1...
В любом случае использование псевдонимов предпочтительно. Во-первых они короче, во-вторых это единственный вариант при использовании в запросе одной таблицы дважды.