Есть ли способ скопировать новый столбец в существующей таблице и скопировать информацию о столбце из другой таблицы в Oracle? - PullRequest
0 голосов
/ 29 апреля 2009

Не могли бы вы переслать мне ответ для моего проекта оракула?

У меня есть две разные таблицы: счет-фактура и клиент. В таблице счетов у меня уже есть столбец с именем date, а в таблице клиентов у меня нет столбца даты, и я уже создал. Я не знаю, как взять данные даты из таблицы счетов. Кто-нибудь может ответить на этот вопрос для меня?

Ответы [ 2 ]

1 голос
/ 29 апреля 2009

Не совсем понятно, что вы хотите, но добавить и заполнить столбец в таблице достаточно просто:

1) Добавление нового столбца:

alter table customer add (some_date date);

(как сказал Даффимо, в таблице Oracle не может быть столбца с именем "date" - или, по крайней мере, не следует).

2) Заполнение столбца из данных в другой таблице:

update customer c
set some_date = (select max(other_date) from invoices i
                 where i.customer_id = c.customer_id
                );

Я использовал max (), потому что я предполагаю, что у клиента может быть более одного счета. Конечно, ваши потребности могут быть разными, но важно то, что подзапрос должен как-то возвращать только 1 строку для каждого клиента.

1 голос
/ 29 апреля 2009

Я думаю, что использование таких ключевых слов, как «дата» в качестве имен столбцов или таблиц, вызывает проблемы. Это должно быть «creation_date» или «invoice_date» - более описательное, а не ключевое слово.

Если это правильно, то "date" в таблице customer должен быть "date_date" или "signup_date" или чем-то еще значимым для клиента, а не просто копией "invoice_date" Принцип СУХОЙ и правила нормализации говорят, что вы не должны повторять данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...