Пожалуйста, смотрите ниже DDL:саз в ЕКЕ
CREATE TABLE dbaddress
(aid integer identity not null, link_id int, link_type char, primary key (aid))
CREATE TABLE dbDoorSupervisor
(did integer identity not null, name varchar(30), primary key (did))
CREATE TABLE dbLicensee
(lid integer identity not null, name varchar(30), primary key (lid))
INSERT INTO dbDoorSupervisor (name) values ('Ian')
INSERT INTO dbLicensee (name) values ('Maria')
INSERT INTO dbaddress (link_id, link_type) values (1,'D')
INSERT INTO dbaddress (link_id, link_type) values (1,'L')
Я пытаюсь получить имя двери супервизора или лицензиат в зависимости от Address.AID, который поставляется. Например, если в выражении WHERE предоставляется помощь 1, то Ian возвращается из таблицы диспетчера дверей, однако, если в предложении WHERE предоставляется помощь 2, то Maria возвращается из таблицы Licensee.
Я знаю, что вы можете использовать операторы CASE в предложении SELECT, но можете ли вы использовать их в предложении FROM i.e. Присоединиться от адреса к лицензиату или адресу к диспетчеру двери в зависимости от предоставленной AID?
Нет, но вы могли бы присоединиться в обеих таблицах, а затем использовать случай в SELECT для чтения только соответствующего связанного имени для каждой строки. Или вы можете сделать два запроса, один из которых ищет один тип и один для другого типа, и объединить их вместе. –
@JacobM, спасибо. Я думаю, что ответ заключается в создании производной таблицы, содержащей все дверные супервизоры и лицензиаты, как я думаю, вы подразумевали. – w0051977