Access 2010查询需求:根据cont表ID_cont关联对应表返回nome和cognome
Access 2010查询需求:根据cont表ID_cont关联对应表返回nome和cognome
嗨,我来帮你搞定这个Access查询的需求!
你的场景逻辑很明确:cont表每条记录里,prop_ID和cond_ID总有一个是有效ID(非-1),另一个固定为-1,现在要根据选中的ID_cont,自动从对应的cond或prop表里取出nome和cognome字段。
我给你准备了两种直接可用的SQL查询方案,适配不同使用场景:
方式1:支持手动输入ID的参数查询
这个版本运行时会弹出输入框,让你填写要查询的ID_cont值,灵活性拉满:
SELECT IIF(cont.cond_ID <> -1, cond.nome, prop.nome) AS nome, IIF(cont.cond_ID <> -1, cond.cognome, prop.cognome) AS cognome FROM (cont LEFT JOIN cond ON cont.cond_ID = cond.ID_cond) LEFT JOIN prop ON cont.prop_ID = prop.ID_prop WHERE cont.ID_cont = [请输入ID_cont];
方式2:固定ID的定向查询
如果你已经明确要查某个特定的ID_cont(比如你例子里的37),直接修改WHERE子句即可:
SELECT IIF(cont.cond_ID <> -1, cond.nome, prop.nome) AS nome, IIF(cont.cond_ID <> -1, cond.cognome, prop.cognome) AS cognome FROM (cont LEFT JOIN cond ON cont.cond_ID = cond.ID_cond) LEFT JOIN prop ON cont.prop_ID = prop.ID_prop WHERE cont.ID_cont = 37;
简单说下逻辑
- 先把cont表分别和cond、prop表做左连接,这样不管是
cond_ID还是prop_ID有效,对应的关联表字段都能被正常访问到 - 用Access自带的
IIF函数做判断:如果cond_ID不等于-1,就从cond表取姓名;否则就从prop表取 - 最后通过WHERE子句精准筛选你要的
ID_cont
拿你给的例子测试:输入ID_cont=37时,cont表的cond_ID=1(非-1),所以会自动匹配cond表中ID_cond=1的Giulio Rossi,完全符合你的预期。
内容来源于stack exchange
相关产品推荐
相关产品推荐

