0
如下所示,表Recording
包含三个外键,其中只有一个将填充任何一个条目。我的问题是我如何格式化Access中的select语句,只会从给定该表的外键的相关表中提取名称?SELECT查询其中只有三个包含外键的字段中的一个填充
我一直在使用I如果,检查时外键不为空的SELECT之后工作的尝试:在一个错误
SELECT Recording.[idRecording],
IIf(Recording.[Artist_idArtist] Is Not Null,
Artist.[artName] ,
IIf(Recording.[Band_idBand] is Not Null,
Band.[bName],
Composer.[cName]))
FROM ...
但是把任何条件后FROM语句,以获得正确的连接,结果:
FROM
IIf(Recording.[Artist_idArtist] Is Not Null,
Artist INNER JOIN Recording ON Recording.[Artist_idArtist] = Artist.[idArtist],
IIf(Recording.Band_idBand Is Not Null,
Band INNER JOIN Recording ON Recording.[Band_idBand] = Band.[idBand],
Composer INNER JOIN Recording ON Recording.[Composer_idComposer] = Composer.[idComposer]));
我是新来的,所以我可能会错过某些明显的东西,或者以错误的方式去做。我相信我在这里结束的是独家弧?我不确定这是否是一个很好的设计,我曾想过要删除记录表,并简单地将外键添加到Track中。
仅供参考这里是关系设计:
谢谢你,先生,完美的作品。 – Gybe 2012-03-25 20:45:51