SQL

5 отговора 408 прегледа
#1

SQL

Искам да Ви питам следното
Имам 3 таблици на SQL (MS SQL Server)
Student, Lecturer, Order .
Искам едно от полетата на Order - да е "referances" към поле от Student ИЛИ към поле от Lecturer.
(ИЛИ съм го написал нарочно с големи - защото е важно) .

Може ли да стане това. Досега се мъчих, четох - ама не намерих решение - а ми изглежда лесно :-(

Отговор
в отговор на sla #2

Re: SQL

e kuv e provlema ...slagash si vav vaprosnoto pole ID-to saotvetno ot Student ili ot Lecturer ....i ti tryabva oshte edno pole ...v koeto da kajesh ot koya tablica e ID -to ...za da mojesh posle v zayavkite da vzimash danni ot vyarnata tablica ....
naprimer 1 - za Lecturer, 2 -za student


ima i druga hvatka ...ama tya e samo kato kuriozno izpalnenie koeto sum vijdal ....

ID-tata ot student sa ti chetni , a tezi ot Lecturer - nechetni ( aoutincrementa e s 2)
, taka mojesh da pravish union na dvete tablici ....bez da ima konflikti v ID-tata...


dano da sum razbral pravilno vaprosa de :) ...

Отговор
в отговор на hmmm #3

Re: SQL

принципно е така, начи виж какъв ми е по точно проблема
В таблица Student имам поле ID, което е PRIMARY KEY от тип int (с стойности например - 104001, 104002 и т.н.)
В таблица Lecturer имам поле ID, което е PRIMARY KEY от тип int (с стойности например - 204001, 204002 и т.н.)

Искам в таблица ORDER да имам поле USER_ID, което да приема САМО стойности от ID на Student ИЛИ Lecturer. Ако не го направя чрез "referances"
- то в таблица Order може да попадне нереално ID - например 3040001 и т.н.
А иначе аз по "1" или "2" - мога да разбера от коя таблица е IDто.

Затова искам USER_ID da e :
CREATE TABLE ORDER
(
USER_ID int not null

foreign key (USER_ID) references STUDENT(ID),
foreign key (USER_ID) references LECTURER(ID)

)
това работи - обаче - не можеш да вкараш каквато и да е стойност в USER_ID -защото възниква конфликт (ID в STUDENT и LECTURER са PRIMARY KEY (а не може да не са PRIMARY KEY) )

какво да правя???


Отговор
в отговор на sla #4

Re: SQL

'което да приема САМО стойности от ID на Student ИЛИ Lecturer'


Ми няма такъв двоен форин кий. По-добре си направи в таблицата ORDER следните колони
USER_ID_S int - foreign key references STUDENT(ID) default 0
USER_ID_L int - foreign key references LECTURER(ID) default 0
и колоната която ти трябва - USER_ID
(не знак какъв е синтакса за SQL Server, аз работя с Oracle)

После стойностите в USER_ID ги правиш като сума от USER_ID_S и USER_ID_L .
Ako сумата е 0, то и двете USER_ID_S и USER_ID_L са били нули - не то трябва този ред от таблицата. Двете не може да са различни от нула едновреммено, защото това означава да имаш USER_ID едновременно и студент и лектор - а това май не ти трябва по условие. Остава третия случай - едното е нула, другото не и резултата е, че в USER_ID имаш ID от таблица Student ИЛИ таблица Lecturer.

Отговор
в отговор на sla #5

Re: SQL

Правиш таблица USERS или PEOPLE, която има primary key USER_ID.
След това STUDENT и LECTURER, съдържат foreign key към USER_ID в PEOPLE.
И в ORDER слагаш foreign key не към STUDENT и/или LECTURER както в момента а към USER_ID в PEOPLE.

Така си сигурен, че ORDER има само съществуващи хора.

Отговор
в отговор на s_dimi #6

Re: SQL

Благодаря Ви много!!!
Просто си мислех, че това което искам става директно, но явно не е така.
Ще помисля кой начин да използвам!!!

Отговор