从mutilple表映射数据

时间:2015-12-22 14:09:08

标签: database ms-access

我构建了这个联合查询来合并代码字段,以找到在哪个表中找到哪些代码。

SQL=SELECT GOLD.code,1 AS Tbl1,0 AS Tbl2
FROM GOLD LEFT JOIN ADN ON GOLD.code = ADN.code
UNION
SELECT GOLD.code,0 AS Tbl1,1 AS Tbl2
FROM GOLD RIGHT JOIN ADN ON GOLD.code = ADN.code;

结果

Code          Tbl1 Tbl2
030?1975*007    0   1
030?1975*008    1   0
030 2259)000    1   0
Y031-1046-002x  1   0
031-1302-000    1   0
031-1303-000    1   0
031-1308-000    1   0
031-71013-RFX   1   0
04-035t:10-002  0   1
04-035t:10-003  1   0
04-035410-000   0   1
04-035410-000   1   0
04-035410-003   0   1
04-035410-003   1   0
047kjlkj**re    1   0
48              1   0

但是我希望在没有重复的情况下更加紧凑,因为我将操作更多的500000条记录。

Code          Tbl1 Tbl2
030?1975*007    0   1
030?1975*008    1   0
030 2259)000    1   0
Y031-1046-002x  1   0
031-1302-000    1   0
031-1303-000    1   0
031-1308-000    1   0
031-71013-RFX   1   0
04-035t:10-002  0   1
04-035t:10-003  1   0
04-035410-000   1   1
04-035410-003   1   1
047kjlkj**re    1   0
48              1   0

或类似于将tbl1和tbl2合并到映射字段中的情况。这将是最好的。

Code         Mapping
030?1975*007    01
030?1975*008    10
030 2259)000    10
Y031-1046-002x  10
031-1302-000    10
031-1303-000    10
031-1308-000    10
031-71013-RFX   10
04-035t:10-002  01
04-035t:10-003  10
04-035410-000   11
04-035410-003   11
047kjlkj**re    10
48              10

这里有2个表

GOLD
Code
030?1975*008
030 2259)000
Y031-1046-002x
031-1302-000
031-1303-000
031-1308-000
031-71013-RFX
04-035t:10-003
04-035410-000
04-035410-003
047kjlkj**re

ADN
Code
030?1975*007
04-035t:10-002
04-035410-000
04-035410-003

1 个答案:

答案 0 :(得分:0)

一种方法是将您的查询包装在一个选择中,只从代码获取t1,t2组中的最大值。如果访问支持完整的外连接,这将更容易。

SQL=
SELECT code, max(tbl1) as tbl1, max(tbl2) as tbl2, max(tbl1)&''&Max(tbl2) as stringversion
FROM (
SELECT GOLD.code,1 AS Tbl1,0 AS Tbl2 
FROM GOLD 
LEFT JOIN ADN 
  ON GOLD.code = ADN.code 
UNION 
SELECT GOLD.code,0 AS Tbl1,1 AS Tbl2 
FROM GOLD 
RIGHT JOIN ADN 
  ON GOLD.code = ADN.code) A
GROUP BY Code;
如果这是首选输出,那么

stringversion应该将最多两列组合在一起。我依靠一些隐式的演员。通过将''字符串添加到看似数字数据类型的字符

这通常是在访问过程中通过基于我们现有的简单聚合数据构建新查询来完成的。