SQLinfo.ru - Все о MySQL PG day 17

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 01.03.2017 12:57:15

mdma
Участник
Зарегистрирован: 01.03.2017
Сообщений: 6

Как значения из двух таблиц вставить в третью?

Имеется проект, который необходимо сделать в oracle forms ко всему прочему. Есть база клиентов, включая фамилию, имя, отчество, номер телефона итд. Есть база товаров, тоже с различными характеристиками. Собственно вопрос вот в чём: Как сделать так что бы можно было взять несколько столбцов из первой таблицы (фамилия имя отчество и например номер телефона) и несколько столбцов из второй (наименование товара, материал изготовления, вес) и что бы всё это можно было вставить в третью таблицу, в которой суммарно и будет это всё отображаться, т.е данные клиента и данные о покупке.

Можно на уровне базы данных, если сможете подсказать как это всё в oracle forms засунуть вообще шикарно будет. Сколько читал не могу никак понять логику этих баз данных, первичных ключей, внешних ключей, вторичных, запутано всё до жути просто.

Если кто нибудь будет согласен помочь с проектом целиком, буду очень признателен, способ связи подберём.

Отредактированно mdma (01.03.2017 12:58:06)

Неактивен

 

#2 01.03.2017 19:20:04

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Как значения из двух таблиц вставить в третью?

По oracle forms здесь вряд ли сильно посоветуют (или спецы по ним прячутся и мы о них не знаем).
По базе - Вам наверное view нужно? То есть,  третья таблица - там данные только на чтение или на изменение/удаление/добавление тоже?

Приведите структуру первых двух таблиц, тестовые данные и, самое главное, что должно отображаться в третьей таблице.
Первичные ключи и вторичные ключи не столь страшны, как кажутся )), давайте пока чисто про данные.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 01.03.2017 20:36:18

mdma
Участник
Зарегистрирован: 01.03.2017
Сообщений: 6

Re: Как значения из двух таблиц вставить в третью?

Структура такая.

Первая таблица Клиенты - Идентификатор, Фамилия, Имя, Отчество, Номер телефона
Вторая таблица Товары - Идентификатор, Наименование, Вес, Цвет
Третья таблица Покупки - Идентификатор клиента, Фамилия, Имя, Номер телефона | Идентификатор товара, Наименование, дата покупки (это поле должно вводится вручную).

Я бы привёл код таблиц которые создал (они на ноутбуке на работе), но там всё по стандарту, ничего особенного, просто перечень столбцов и типов данных, с ключами я так и не разобрался.
Как вариант можно сделать так что бы в третью таблицу вводились вручную только идентификаторы клиента и товара и дата покупки, и всё это тело записывалось в отдельную таблицу (в третью всмысле) но там отображались именно нормальные для восприятия данные, т.е перечень столбцов.
На самом деле я пока думаю еще как лучше это сделать, и как вообще такое обычно делается, просто недавно стал изучать oracle и пока не врубаюсь в архитектуру БД до конца.

Неактивен

 

#4 01.03.2017 20:39:09

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Как значения из двух таблиц вставить в третью?

Вы так и не ответили, третья таблица - это вьюшка (то есть только на чтение) или же полноценная таблица.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 01.03.2017 20:58:23

mdma
Участник
Зарегистрирован: 01.03.2017
Сообщений: 6

Re: Как значения из двух таблиц вставить в третью?

Третья таблица должна быть доступна и для чтения и для редактирования (например если клиент отказался от товара что бы была возможность его из неё удалить). Т.е эта таблица должна хранить суммарную информацию о покупке, её должно быть возможно прочитать, данные там должны хранится постоянно, но так же должна быть возможность редактирования.

Неактивен

 

#6 02.03.2017 11:14:01

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Как значения из двух таблиц вставить в третью?

Теперь понятней smile.
Первичным ключом в таблице Клиентов логичней сделать Идентификатор, с таблицей товаров также.
В таблице покупок будут соответственно два вторичных ключа - Идентификатор клиента и Идентификатор товара. Типы данных у mysql и у oracle разные, поэтому тут не получится подсказать.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#7 02.03.2017 11:18:01

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Как значения из двух таблиц вставить в третью?

mdma написал:

Как сделать так что бы можно было взять несколько столбцов из первой таблицы (фамилия имя отчество и например номер телефона) и несколько столбцов из второй (наименование товара, материал изготовления, вес) и что бы всё это можно было вставить в третью таблицу, в которой суммарно и будет это всё отображаться, т.е данные клиента и данные о покупке.

Ну как, sql-запросами на уровне БД это делается.

SELECT id,name,surname,patronymic,phone FROM client WHERE необходимое условие;
SELECT id,goods_name,... FROM goods WHERE необходимое условие;

и далее вставить в таблицу с покупками.

INSERT INTO transactions(client_id,goods_id,datetime) values (...);

При этом в таблицу покупок не нужно вставлять имя, фамилию и прочие данные о клиенте (как и сопутствующую информацию о товаре), туда нужно только id клиента и id товара (ну и время покупки, видимо smile )


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#8 02.03.2017 14:18:04

mdma
Участник
Зарегистрирован: 01.03.2017
Сообщений: 6

Re: Как значения из двух таблиц вставить в третью?

Ну в том то и дело что мне кажется id будет не достаточно. Проверьте вашу почту пожалуйста, может быть вам всё еще понятнее станет)

Неактивен

 

#9 02.03.2017 14:40:28

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Как значения из двух таблиц вставить в третью?

На почту я ответил, общение по треду ведется в форуме. Почему id кажется недостаточным?
Давайте говорить предметно - прикладывайте структуру табличек, тестовые данные (только в mysql-варианте, oracle нет возможности использовать ). В идеале - создайте пример на sqlfiddle.com
(там, кстати, oracle есть в списке, посмотрите на http://sqlfiddle.com/#!9/ae8b4 и сделайте похожее ).


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#10 02.03.2017 15:17:05

mdma
Участник
Зарегистрирован: 01.03.2017
Сообщений: 6

Re: Как значения из двух таблиц вставить в третью?

Ресурс которые вы мне дали у меня подтормаживал в браузере, я сделал на http://pastebin.com/WaXBG6Fm С mysql работал еще меньше чем с oracle, но надеюсь общую мысль донёс.

Отредактированно mdma (02.03.2017 15:17:24)

Неактивен

 

#11 02.03.2017 15:25:36

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2055

Re: Как значения из двух таблиц вставить в третью?

Ага, ок, добавьте еще несколько строчек с тестовыми данными во все таблицы и можно колдовать с запросами.
insert into clients values('Иванов Иван',..);
...

insert into product values('Терминатор');
.....

и insert into orders

и я покажу Вам, что хранить ФИО клиента совершенно не нужно в таблице orders, потому что оно уже содержится в таблице clients.

В таблице clients добавьте вторичный ключ на поле id_client чтобы ссылался на поле id таблицы client
также
в таблице orders добавьте вторичный ключ на поле id_client чтобы ссылался на поле id таблицы order

этого от Вас явно ожидают.

sqlfiddle нетороплив, но там можно прямо выполнять запросы. Так что лучше на него переезжайте.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#12 02.03.2017 18:04:18

mdma
Участник
Зарегистрирован: 01.03.2017
Сообщений: 6

Re: Как значения из двух таблиц вставить в третью?

В таблице clients добавьте вторичный ключ на поле id_client чтобы ссылался на поле id таблицы client также в таблице orders добавьте вторичный ключ на поле id_client чтобы ссылался на поле id таблицы order написал:

А на что тогда ссылаться id_product ? Ведь помимо ФИО в третьей таблице будет еще и id товара...

И для чего добавлять еще текстовые поля? Чем их потом заполнять?

Отредактированно mdma (02.03.2017 18:05:03)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson