首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql中的连接给了我奇怪的结果

sql中的连接给了我奇怪的结果
EN

Stack Overflow用户
提问于 2013-10-31 10:24:54
回答 3查看 88关注 0票数 0

我有两个查询: Q1和Q2。

Q1为每个演示和日期生成一个结果。

Q2为每个演示、日期和站点生成一个结果。

此外,来自Q2的给定演示和站点的日期将与Q1有一些重叠,

但并不是所有来自Q1的日期都在那里,甚至在Q2中可能会有一些Q1中没有的新日期。

我想要做的是生成一个结果表,该表的Q1结果基本上重复(行下的行)等于Q2中的站点数量。

来自Q2的结果应该在第二列,并且日期和演示相匹配。

如果Q2站点中不存在Q1格式日期,则条目应为零或null。我知道这可以通过joins来实现,但是我不能让它工作。我试过了-

代码语言:javascript
复制
select a.result, b.site, b.result from
(Q1) as a right join (Q2) as b on a.demo = b.demo and a.date=b.date

但这产生了一些奇怪的结果。对于每个Q2站点,a.result的条目是不同的,尽管它们不应该是不同的。

编辑-这是我想要做的-

Q1 -

代码语言:javascript
复制
demo    |   date
------------------------------
1       |   10/31/2013
1       |   11/01/2013
2       |   11/02/2013

Q2 -

代码语言:javascript
复制
 demo   |   site    |   date
------------------------------
1       |   A       |   10/31/2013
1       |   A       |   11/01/2013
2       |   B       |   11/01/2013
2       |   B       |   11/02/2013

期望的结果-

代码语言:javascript
复制
    demo    |   date          | site
---------------------------------------
   1        |   10/31/2013    |  A
   1        |   11/01/2013    |  A
   2        |   11/02/2013    |  null
   1        |   10/31/2013    |  null
   1        |   11/01/2013    |  B
   2        |   11/02/2013    |  B  
EN

回答 3

Stack Overflow用户

发布于 2013-10-31 10:42:13

使用内部连接而不是右连接

代码语言:javascript
复制
select a.result, b.site, b.result from (Q1) as a 
inner join (Q2) as b on a.demo = b.demo and a.date=b.date
票数 0
EN

Stack Overflow用户

发布于 2013-10-31 10:46:22

根据您的说明,您可以使用此查询获得该结果。

代码语言:javascript
复制
SELECT
    a.demo,
    a.date,
    b.site
FROM (Q1) a
LEFT JOIN (Q2) a ON b.date = a.date

但是,在结果列表中对其进行排序将需要在子查询中提供更多信息。您需要使用像Row_Number()这样的函数(假设您正在使用MSSQL)在子查询中生成惟一的in,以用于排序。

票数 0
EN

Stack Overflow用户

发布于 2013-10-31 12:12:08

以下是我认为您所要求的示例:

代码语言:javascript
复制
SELECT M.demo, M.date, M.site FROM
(
  SELECT 2 AS FromQuery, Q2.demo, Q2.date, Q2.site
  FROM Q2
  UNION
  SELECT 1 AS FromQuery, Q1.demo, Q1.date, null AS site
  FROM Q1
) AS M
ORDER BY M.FromQuery
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19697387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档