Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> возможна ли связь с несколькими таблицами 
:(
    Опции темы
BloodWizard
Дата 25.5.2011, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 26.10.2010

Репутация: нет
Всего: нет



Здравствуйте, уважаемые! Есть таблица со списком товаров, которые могут быть различного типа и три таблички с описанием каждого типа товара
Код

create table price(
id int primary key,
type int,
description_id int,
cena int);


и ещё три таблицы:
Код

create table type1(
id int primary key,
made_by varchar,
model varchar,
camera varchar,
pole1_type1 varchar,
pole2_type1 varchar,
pole3_type1 varchar,);

Код

create table type2(
id int primary key,
made_by varchar,
model varchar,
keys varchar,
pole1_type2 varchar,
pole2_type2 varchar,
pole3_type2 varchar);

Код

create table type3(
id int primary key,
made_by varchar,
model varchar,
keys varchar,
pole1_type3 varchar,
pole2_type3 varchar,
pole3_type3 varchar);



в зависимости от значения поля description_id в таблице price нужно делать связь к нужной из трёх таблице... как этом можно сделать... 

Это сообщение отредактировал(а) BloodWizard - 25.5.2011, 07:50
PM MAIL   Вверх
Zloxa
Дата 25.5.2011, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(BloodWizard @  25.5.2011,  07:44 Найти цитируемый пост)
в зависимости от значения поля description_id в таблице price нужно делать связь к нужной из трёх таблице... как этом можно сделать... 


Код

select 
  coalesce(type1.made_by,type2.made_by,type3.made_by) as made_by 
...
from price
left join type1 on 1 = price.description_id and type1.id = price.id
left join type2 on 2 = price.description_id and type2.id = price.id
left join type3 on 3 = price.description_id and type3.id = price.id


Добавлено @ 09:00
 smile Кстати, пардон..  быть может под связью вы имели FK?

Если так - натянуть ограничение уникальности на пару (id,description_id) таблицы price, для каждой таблицы добавить поле description_id, для железобетона ограничить содержимое этого поля чеком, и стоить fk по паре (id,description_id)... если движок, конечно, такое позволяет.

Сорри, если не совсем на том диалекте:
Код

alter table pice add constraint price$id_descr$unc unique (id,description_id);
alter table type1 add column description_id int defalut 1 not null ;
alter table type1 add constraint type1$description_id$chk check (description_id = 1);
alter table type1 add constraint type1$price$fk foreign key (id,description_id) references pice(id,description_id);


Это сообщение отредактировал(а) Zloxa - 25.5.2011, 09:32


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Galus
Дата 26.5.2011, 04:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 5.5.2011

Репутация: нет
Всего: нет



А зачем вообще делать эти 3 дополнительных таблицы? Они же идентичны одна другой. Достаточно одной таблицы. Ну максимум двух, если вам важно значение description_id.
PM MAIL   Вверх
BloodWizard
Дата 27.5.2011, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 26.10.2010

Репутация: нет
Всего: нет



Цитата(Galus @ 26.5.2011,  04:40)
А зачем вообще делать эти 3 дополнительных таблицы? Они же идентичны одна другой. Достаточно одной таблицы. Ну максимум двух, если вам важно значение description_id.

Они тут на форуме идентичны в реле они ну очень различаются.

Добавлено через 5 минут и 2 секунды
Цитата(Zloxa @ 25.5.2011,  08:46)
Цитата(BloodWizard @  25.5.2011,  07:44 Найти цитируемый пост)
в зависимости от значения поля description_id в таблице price нужно делать связь к нужной из трёх таблице... как этом можно сделать... 


Код

select 
  coalesce(type1.made_by,type2.made_by,type3.made_by) as made_by 
...
from price
left join type1 on 1 = price.description_id and type1.id = price.id
left join type2 on 2 = price.description_id and type2.id = price.id
left join type3 on 3 = price.description_id and type3.id = price.id


Добавлено @ 09:00
 smile Кстати, пардон..  быть может под связью вы имели FK?

Если так - натянуть ограничение уникальности на пару (id,description_id) таблицы price, для каждой таблицы добавить поле description_id, для железобетона ограничить содержимое этого поля чеком, и стоить fk по паре (id,description_id)... если движок, конечно, такое позволяет.

Сорри, если не совсем на том диалекте:
Код

alter table pice add constraint price$id_descr$unc unique (id,description_id);
alter table type1 add column description_id int defalut 1 not null ;
alter table type1 add constraint type1$description_id$chk check (description_id = 1);
alter table type1 add constraint type1$price$fk foreign key (id,description_id) references pice(id,description_id);

Это получается обращение ко всем таблицам сразу? 
PM MAIL   Вверх
Zloxa
Дата 27.5.2011, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(BloodWizard @  27.5.2011,  13:42 Найти цитируемый пост)
Это получается обращение ко всем таблицам сразу?  

Что вас смущает? Вы ведь хотите видеть в одном результате данные сразу из несколькоих таблиц?


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1231 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.