2015-10-04 4 views
0

У меня есть три стола, консультант, мастерство и consultant_skill. Я ищу все навыки консультанта 1.Ссылка между 3 таблицами

Как я могу создать отношения между тремя с выбором и где?

спасибо

SQL - ORACLE DATABASE

CREATE TABLE consultant 
(c_id NUMBER(6), 
c_last VARCHAR2(20), 
c_first VARCHAR2(20), 
c_mi CHAR(1), 
c_add VARCHAR2(30), 
c_city VARCHAR2(20), 
c_state CHAR(2), 
c_zip VARCHAR2(10), 
c_phone VARCHAR2(15), 
c_email VARCHAR2(30), 
CONSTRAINT consultant_c_id_pk PRIMARY KEY (c_id)); 

CREATE TABLE skill 
(skill_id NUMBER(3), 
skill_description VARCHAR2(50), 
CONSTRAINT skill_skill_id_pk PRIMARY KEY (skill_id)); 

CREATE TABLE consultant_skill 
(c_id NUMBER(6), 
skill_id NUMBER(3), 
certification VARCHAR2(8), 
CONSTRAINT consultant_skill_pk PRIMARY KEY (c_id, skill_id), 
CONSTRAINT consultant_skill_c_id_fk FOREIGN KEY (c_id) REFERENCES consultant(c_id), 
CONSTRAINT consultant_skill_skill_id_fk FOREIGN KEY (skill_id) REFERENCES skill(skill_id)); 

ответ

0

Ну обычный способ заключается в использовании ПК ВСТУПИТЬ против FK, как показано ниже:

select 
    * 
from 
    consultant 
    join 
    consultant_skill 
    on consultant.c_id = consultant_skill.c_id 
    join 
    skill 
    on consultant_skill.skill_id = skill.skill_id 

Как правило, проверки если есть n-1 соединяется для таблиц n, чтобы избежать декартовых объединений.

+0

спасибо, я думаю, я понял! – NewPassionnate

+0

@Caroleb Добро пожаловать! Пожалуйста, отметьте ответ, как принято, если вы сочтете это полезным. – toddlermenot

+0

У меня вопрос, обычно я использую select для выбора столбцов, которые я хочу показать в результате. Я попытался изменить *, но он не работает – NewPassionnate

Смежные вопросы