寻找关于我的数据库中特定情况的一些建议......
现在我有一个数据库,其中包含一个链接到源数据表的查询。在查询中,我有一个表,其中包含组ID,子组ID及其对应的状态。它通过组ID链接到源数据,并基于此拉动状态。
我打算做的是如果子组ID包含关键字,让我们说“狗”,而不是按组ID拉动状态,请按子组ID拉出。
我尝试使用iif语句并仅为子组ID设置独立查询,但我得到空值。
在下面的示例中,记录1& 4,将检索CA& WI。记录2& 3,因为他们在描述中有“狗”,他们会找回NY。
我的查询是这样组织的,
Group ID Subgroup ID State
1 1000067 Omega 541111 Aplha
2 1000056 Epsilon 542222 Bravo Dog
3 2000653 Gamma 546066 Echo Dog
4 2000654 Theta 968886 Charlie
&安培;参考表如下所示,
ID
1000067 Omega CA
1000056 Epsilon FL
2000653 Gamma TX
2000654 Theta WI
541111 Alpha CA
542222 Bravo Dog NY
546066 Echo Dog NY
968886 Charlie FL
非常感谢有关最佳方法的任何帮助或想法!
答案 0 :(得分:0)
本质上你要做的是运行两个略有不同的查询 - 一个“狗”查询和一个“非狗”查询 - 并合并结果。 UNION查询可以做到这一点。用我们的主表[dogMain]
Record_ID Group_ID Subgroup_ID
--------- --------------- -----------------
1 1000067 Omega 541111 Alpha
2 1000056 Epsilon 542222 Bravo Dog
3 2000653 Gamma 546066 Echo Dog
4 2000654 Theta 968886 Charlie
和我们的参考表[dogRef]
ID State
----------------- -----
1000067 Omega CA
1000056 Epsilon FL
2000653 Gamma TX
2000654 Theta WI
541111 Alpha CA
542222 Bravo Dog NY
546066 Echo Dog NY
968886 Charlie FL
查询
SELECT dogMain.Record_ID, dogRef.State
FROM dogMain INNER JOIN dogRef ON dogRef.ID = dogMain.Group_ID
WHERE dogMain.Subgroup_ID NOT LIKE '*dog'
UNION ALL
SELECT dogMain.Record_ID, dogRef.State
FROM dogMain INNER JOIN dogRef ON dogRef.ID = dogMain.Subgroup_ID
WHERE dogMain.Subgroup_ID LIKE '*dog'
ORDER BY 1
返回
Record_ID State
--------- -----
1 CA
2 NY
3 NY
4 WI