我有一个与其他两个表有关系的表,要注意的是两个外键之一将为空。
事实是,图片可以属于治疗或服务对象治疗属于客户。问题是,如果我仅链接到客户,我不知道哪张照片与治疗相关而不是。
解决方案? :
谢谢您的任何想法
解决此问题的一种方法是创建单独的映射表,以表示一方面是图片和处理方式,另一方面是图片和客户之间的关系。
create table pictures_treatments(
idPicture int,
idTreatment int,
primay key(idPicture),
foreign key (idPicture) references t_pictures(idPicture),
foreign key (idTreatment) references t_treatment(idTreatment)
);
create table pictures_clients(
idClient int,
idTreatment int,
primay key(idPicture),
foreign key (idPicture) references t_pictures(idPicture),
foreign key (idClient) references t_client(idClient)
);
有了此设置,您可以轻松地恢复与带有两个左连接的治疗或客户相关的图片:
select t.*, p.picPath
from t_treatments t
left join pictures_treatments pt on pt.idTreatment = t.idTreatment
left join t_pictures p on p.idPicture = pt.idPicture;
select c.*, p.picPath
from t_clients t
left join pictures_clients pc on pc.idClient = c.idClient
left join t_pictures p on p.idPicture = pt.idPicture