标签: full-outer-join

在两个以上的表上使用 Access 模拟 FULL OUTER JOIN

我艰难地了解到 Access 不允许您进行完整的外部联接,在阅读如何模拟一个外部联接时,我已经开始了解如何这样做,但是在尝试将其应用于两个以上的表时遇到了问题.

是否像执行以下操作一样简单?

SELECT * FROM table1
LEFT JOIN table2 ON table1.field = table2.field
LEFT JOIN table3 ON table1.field = table3.field
UNION
SELECT * FROM table1
RIGHT JOIN table2 ON table1.field = table2.field
RIGHT JOIN table3 ON table1.field = table3.field
Run Code Online (Sandbox Code Playgroud)

ms-access full-outer-join

2
推荐指数
1
解决办法
1282
查看次数

SELECT Query在PostgreSQL中合并/连接两个表

如果有两个表格如下所述:

表格1

    day          acount
    1998-03-01     8
    1998-03-04     9
    1998-03-05     10
    1998-03-09     8
Run Code Online (Sandbox Code Playgroud)

表2

    day          bcount
    1998-03-02     9
    1998-03-03     7
    1998-03-05     4
    1998-03-06     3
Run Code Online (Sandbox Code Playgroud)

select查询是否可以按以下格式按升序返回数据?

结果

    day          acount        bcount
    1998-03-01     8             0
    1998-03-02     0             9
    1998-03-03     0             7
    1998-03-04     9             0
    1998-03-05     10            4
    1998-03-06     3             0
    1998-03-09     8             0
Run Code Online (Sandbox Code Playgroud)

sql postgresql full-outer-join

1
推荐指数
1
解决办法
3440
查看次数

SQL Full Outer加入同一个表中的同一列

这可能比任何事情都更像是一个设计问题,但我希望没有太多伏都教就可以实现.

假设我有一个这样的表:

SELECT * FROM stuff;

 id   grp
  1     a
  2     a
  3     a
  1     b
  2     b
  4     b
Run Code Online (Sandbox Code Playgroud)

我希望得到这样的东西(ID分组在列中):

a.id    b.id
   1       1
   2       2
   3    null
null       4
Run Code Online (Sandbox Code Playgroud)

这可能吗?我试过以下查询......

SELECT a.id, b.id FROM stuff a
FULL OUTER JOIN stuff b ON a.id = b.id
WHERE a.grp = 'a' AND b.grp = 'b';
Run Code Online (Sandbox Code Playgroud)

...但我只得到公共节点:

a.id    b.id
   1       1
   2       2
Run Code Online (Sandbox Code Playgroud)

我也试过玩JOIN ON和WHERE,但似乎无法获得理想的结果.

我在网上找到的最接近的问题就是这个问题,但我也无法让UNION工作.

性能不是问题,我可以假设只有2组.

有任何想法吗?

sql oracle full-outer-join

1
推荐指数
1
解决办法
9888
查看次数

如何进行完全外部联接,无论它们是否匹配,都将填充其联接标准

我有两个表我正在进行全外连接.他们加入变量"accsnnum",他们都共享.但我有一个问题.只有当两个集合中都存在时,才会打印出来,但我需要它才能打印出来,无论它是否都在两者中,因为我正在比较按accsnum分组的变量的计数.

为了说明,我有一个看起来像这样的labtable(只有这两个变量):

accsnum   lab_lbcount
  A12         3
  A11         5
  A14         7
  A13         5
Run Code Online (Sandbox Code Playgroud)

并且看起来像这样的rslttable(只有这两个变量):

accsnum    rslt_lbcount
  A15          5
  A12          2
  A14          7
  A16          3
Run Code Online (Sandbox Code Playgroud)

我使用以下代码组合这两个:

proc sql;
create table both as
select Labtable.accsnnum label="Lab_accsnnum", Rslttable.accsnnum 
  label="Rslt_accsnnum", Labtable.Lab_lbcount label="Lab_lbtestcd_count", 
  Rslttable.Rslt_lbcount label="Rslt_lbtestcd_count", 
  Lab_lbcount-Rslt_lbcount as difference
from work.Labtable
full outer join work.Rslttable 
on Labtable.accsnnum = Rslttable.accsnnum;
quit;
Run Code Online (Sandbox Code Playgroud)

这会产生下表:

accsnum   lab_lbcount   rslt_lbcount   difference
               5             .             .
  A12          3             2             1
               5             .             .
  A14          7             7             0
               .             5             .
               .             3             .
Run Code Online (Sandbox Code Playgroud)

请注意,它仅打印出两个表连接的位置的accsnum,但包括"lb_count"和"rslt_count"的计数.我需要让它打印出该变量中的accsnum,即使它不在两者中,或者我需要通过accsnum想出一种方法来加入,但仍然打印出两个表中每个表的accsum.基本上,我希望输出看起来像这样:

accsnum …
Run Code Online (Sandbox Code Playgroud)

sql join sas full-outer-join

1
推荐指数
1
解决办法
6424
查看次数

3个表上的完全外连接

我试图从3个表中获得所有组合的完整结果集,但它不起作用,因为我无法弄清楚如何告诉SQL-Server 2008我想要什么.

我把它简化为以下类似的问题...我有3个表:

table `date_ranges`:
  --------------------------------------------------------
| start_day                  | end_day                     |
| -------------------------------------------------------- |
| November, 01 2015 14:37:00 | November, 02 2015 00:00:00  |
| November, 02 2015 00:00:00 | November, 03 2015 00:00:00  |
| November, 03 2015 00:00:00 | November, 04 2015 00:00:00  |
| November, 04 2015 00:00:00 | November, 04 2015 02:00:00  |
  --------------------------------------------------------

table `sites`:
  ----
| site |
| ---- |
| 1    |
| 2    |
| 3    |
| 4    | …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008 full-outer-join

1
推荐指数
1
解决办法
540
查看次数

SELECT*FROM tableA,tableB WHERE条件[+]

我有以下查询

SELECT * 
FROM tableA, tableB
WHERE Conditions [+]
Run Code Online (Sandbox Code Playgroud)

这个关键字条件[+]代表什么?此查询如何表现为外部联接?

sql oracle outer-join full-outer-join

0
推荐指数
1
解决办法
1325
查看次数

全外连接不返回所有行?

我有一个表包含多个日期的多个记录.

我试图看到"日期1"和"日期2"之间的区别,我的完整外部联接不会返回我期望的数据.

我知道在日期1有13278行,在日期2有13282 - 因此我希望看到至少13282行,但我回到13195 ...这是一个INNER JOIN(我测试了这个).

我希望得到如下结果:

001     000123    009    NULL    1000
001     000124    009    1000    1000
001     000125    009    1000    1000
001     000126    009    1000    NULL
Run Code Online (Sandbox Code Playgroud)

但这不会从任何一方获得任何空行?

SELECT 
    COALESCE(c.AccountBranch, p.AccountBranch)
    , COALESCE(c.AccountNumber, p.AccountNumber)
    , COALESCE(c.AccountSuffix, p.AccountSuffix)
    , c.PrincipleAmount
    , p.PrincipleAmount
    FROM ADStaging..cb_account_extension_principle_dpd c
    FULL OUTER JOIN ADStaging..cb_account_extension_principle_dpd p
        ON p.AccountBranch = c.AccountBranch
        AND p.AccountNumber = c.AccountNumber
        AND p.AccountSuffix = c.AccountSuffix
WHERE 
    (c.BusinessDataDate IS NULL OR c.BusinessDataDate = @CurrentBusinessDataDate)
    AND
    (p.BusinessDataDate IS NULL OR p.BusinessDataDate = @PreviousBusinessDataDate) …
Run Code Online (Sandbox Code Playgroud)

t-sql full-outer-join

0
推荐指数
1
解决办法
8659
查看次数

如何合并 OUTER JOIN 和 UNION 结果?

我有两个表,我想要两个表中的所有数据。如果表具有匹配的 AssetID,则将它们连接到一行。如果没有,则在单独的行上。完整的外部联接听起来像是正确的方法,但我在如何根据它来自哪个表来选择键方面遇到了问题。

TABLE A                 TABLE B
AssetID | Valuable      AssetID | Protected 
-------------------    -------------------
123     | Yes           123     | Yes   
456     | No            321     | No
653     | Yes   
        
Run Code Online (Sandbox Code Playgroud)

目标:

TABLE C     
AssetID | Valuable | Protected
---------------------------
123 | Yes   |Yes
456 | No    |
653 | Yes   |
321 |       |No


SELECT TableA.AssetID, TableA.Valuable, TableB.Protected
FROM (
    SELECT AssetID, Valuable
    FROM TableA
) ta    
FULL OUTER JOIN (
    SELECT AssetID, Protected
    FROM TableB   
) tb ON ta.AssetID=tb.AssetID
    
    
Run Code Online (Sandbox Code Playgroud)

生产 …

sql t-sql sql-server select full-outer-join

0
推荐指数
1
解决办法
177
查看次数