如何连接两个表并显示源?
Posted
技术标签:
【中文标题】如何连接两个表并显示源?【英文标题】:How to join two tables and show source? 【发布时间】:2019-11-26 13:01:29 【问题描述】:如何连接两个表中的值...
表_1:
ID | Value
----------
10 | Dog
27 | Cat
表_2:
ID | Value
----------
27 | Cat
我的 SQL...(Microsoft Access 2016)
SELECT ID, VALUE , "YES" AS Table_1, NULL AS Table_2
FROM Table_1
UNION
SELECT ID, VALUE, NULL AS Table_1, "YES" AS Table_2
FROM Table_2
...返回这个结果:
ID | Value | Table_1 | Table_2
------------------------------
10 | Dog | YES |
27 | Cat | YES |
27 | Cat | | YES
但我想得到这样的结果:
ID | Value | Table_1 | Table_2
------------------------------
10 | Dog | YES |
27 | Cat | YES | YES
【问题讨论】:
【参考方案1】:你可以使用聚合和union all
:
select id, value, max(table_1) as table_1, max(table_2) as table_2
from (select ID, VALUE , "YES" AS Table_1, NULL AS Table_2
from Table_1
union
select ID, VALUE, NULL AS Table_1, "YES" AS Table_2
from Table_2
) t
group by id, value;
SQL 中的替代方法是 FULL JOIN
,但 MS Access 不支持完全连接。
【讨论】:
【参考方案2】:您可以制作一个 table1 + table2 值的列表,然后使用简单的 jeft join 检查这些值是否存在于 table2 或 2 中。
select
base.*,
iif(isnull(t.value), null, 'YES') table1,
iif(isnull(t2.value), null, 'YES') table2
from
(
Select value from Table_1 -- if you have duplicate values add groupby here
union
select value from Table_2
) base -- Make a collection of values from table1 and 2
left join Table_1 T on base.value = T.value
left join Table_2 T2 on base.value = T2.value;
不确定您是否可以在design view
中打开上述查询,但该查询应该可以在访问中工作。要对design view
友好,您需要为base
创建一个查询对象,然后您可以简单地进行左连接和iifs
【讨论】:
以上是关于如何连接两个表并显示源?的主要内容,如果未能解决你的问题,请参考以下文章