标签: outer-join

使用COUNT和GROUP BY在MySQL中显示计数为0的行

我有两个表,主题和内容,其中内容引用主题与外键.我想显示每个主题在内容表中出现的次数(0,如果没有出现).但是下面的查询只给出了count> 0的行并忽略了其他行:

SELECT Subject.id, Subject.name, COUNT(Content.subject_id) AS `count`
FROM Subject LEFT JOIN Content
ON Subject.id = Content.subject_id
WHERE type = @type
GROUP BY Subject.id;
Run Code Online (Sandbox Code Playgroud)

我检查并试图按照这个,这个这篇文章但由于某种原因上面的代码不起作用.

有任何想法吗?

编辑:类型字段位于内容表中,导致问题为"Will A"指出

mysql count outer-join

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

使用具有多个别名的外部联接来联接两个SELECT语句

我有一个复杂的select语句,当执行该语句时,会给它一个我想要的日期或日期范围,然后输出结果。问题是我不知道如何将相同的SQL语句与第一个具有1个日期范围的Statement和第二个具有另一个数据范围的语句联接在一起。下面的例子:

执行select语句时,我选择11月:
EMPLID名称Current_Gross_Hours(11月)

当我再次执行select语句时,我从1月到11月进行选择:
EMPLID NAME Year_To_Date_Hours(1月-11月)

我想要的是:
EMPLID名称Current_Gross_Hours(11月)Year_To_Date_Hours(1月-11月)

如果自行执行,则SQL Select语句将正确运行。但是我不知道如何加入他们。这是我要编写的SQL代码,但我不知道如何正确编写SQL语句。任何帮助或指示,我们将不胜感激。

(SELECT DISTINCT
SUM("PSA"."AL_HOURS") AS "Current Gross Hours", "PSJ"."EMPLID","PSP"."NAME"
FROM
"PS_JOB" "PSJ", "PS_EMPLOYMENT" "PSE", "PS_PERSONAL_DATA" "PSP", "PS_AL_CHK_HRS_ERN" "PSA"
WHERE
((("PSA"."CHECK_DT" = TO_DATE('2011-11-01', 'YYYY-MM-DD')) AND
("PSJ"."PAYGROUP" = 'SK2') AND
(("PSJ"."EFFSEQ"= ( 
    SELECT MAX("INNERALIAS"."EFFSEQ")
    FROM "PS_JOB" INNERALIAS 
    WHERE "INNERALIAS"."EMPL_RCD_NBR" = "PSJ"."EMPL_RCD_NBR"
    AND "INNERALIAS"."EMPLID" = "PSJ"."EMPLID"
    AND "INNERALIAS"."EFFDT" = "PSJ"."EFFDT")
AND
"PSJ"."EFFDT" = ( 
    SELECT MAX("INNERALIAS"."EFFDT")
    FROM "PS_JOB" INNERALIAS 
    WHERE "INNERALIAS"."EMPL_RCD_NBR" = "PSJ"."EMPL_RCD_NBR"
    AND "INNERALIAS"."EMPLID" = "PSJ"."EMPLID"
    AND "INNERALIAS"."EFFDT" <= SYSDATE))))) 
AND
("PSJ"."EMPLID" …
Run Code Online (Sandbox Code Playgroud)

sql oracle join outer-join

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

SQL Full Outer Join

我有一个名为'Logs'的表,其中包含以下值:

CheckDate        CheckType        CheckTime
-------------------------------------------
2011-11-25       IN               14:40:00
2011-11-25       OUT              14:45:00
2011-11-25       IN               14:50:00
2011-11-25       OUT              14:55:00
2011-11-25       IN               15:00:00
2011-11-25       OUT              15:05:00
2011-11-25       IN               15:15:00
2011-11-25       OUT              15:20:00
2011-11-25       IN               15:25:00
2011-11-25       OUT              15:30:00
2011-11-25       OUT              15:40:00
2011-11-25       IN               15:45:00
Run Code Online (Sandbox Code Playgroud)

我想使用上一个表来产生以下结果:

CheckDate        CheckIn        CheckOut
-----------------------------------------
2011-11-25       14:40:00       14:45:00
2011-11-25       14:50:00       14:55:00
2011-11-25       15:00:00       15:05:00
2011-11-25       15:15:00       15:20:00
2011-11-25       15:25:00       15:30:00
2011-11-25       NULL           15:40:00
2011-11-25       15:45:00       NULL
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经提出了这个结果集:

CheckDate        CheckIn        CheckOut
-----------------------------------------
2011-11-25       14:40:00       14:45:00
2011-11-25       14:50:00       14:55:00
2011-11-25       15:00:00 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server-2005 outer-join

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

LINQ:左外连接有多个条件

我有两个名为BaseReportDefinitions和InputReportDefinitions的IEnumerables.我需要做一个左外连接,我想要所有的InputReportDefinitions和匹配的BaseReportDefinitions.两个IEnumberables都包含ReportDefinition对象,这些对象包含需要用作连接键的ParentName和ReportName属性.我想在匿名对象中为每个(在BaseReportDefinition条目的情况下,它可能为null)返回ReportDefinition对象.

我已经看到了linq外连接和外连接的许多例子,它们具有静态的第二个条件,经常被放入where条件但没有真正完全用于连接的两个条件.

c# linq outer-join

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

使用outer()替换R中的嵌套for

我有一个简单的R代码来添加2​​x2矩阵的组件

sum<-0
for(i in 1:2){ # row
    for(j in 1:2){ #column
      sum<-sum+mat[i,j]
    }
  }
Run Code Online (Sandbox Code Playgroud)

是否可以使用outer()或任何其他函数来替换这段代码并使其更有效?我的目标是在我的整个代码中替换嵌套的for循环,以减少执行程序所需的时间.

编辑:我也想尝试在代码片段上使用它,如:

for(i in 1:2){ # row
    for(j in 1:2){ #coloumn

      chisqr<- chisqr+ ((mat[i,j]-expmat[i,j])^2)/expmat[i,j]

    }
  }
Run Code Online (Sandbox Code Playgroud)

和:

  for(i in 1:2){ # row
    for(j in 1:2){ #coloumn
      rowsum<-0
      colsum<-0

      for(k in 1:2){
        rowsum<- rowsum+mat[i,k]
      }

      for(k in 1:2){
        colsum<- colsum+mat[k,j]
      }

      expmat[i,j]<- (rowsum*colsum)/sum
    }
  }
Run Code Online (Sandbox Code Playgroud)

r outer-join

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

当某些东西不在连接表中时,SQL选择

好.我在一个表中有一些数据,它多次引用另一个表中的一些数据.

表1 - 主客户表Table2 - 用户定义的字段

假设我有一个查询,显示Table1中的客户端ID以及表2中所有附加/使用的"使用的已定义字段"

SELECT t1.Id, t2.udf
FROM Table1 t1
JOIN Table2 t2 ON t1.Id = t2.Index
WHERE t1.EndDate IS NULL AND
      t1.Id = '1234.9876' AND
Run Code Online (Sandbox Code Playgroud)

我会得到以下结果......

ID            UDF
1234.9876     100
1234.9876     110
1234.9876     118
1234.9876     124
1234.9876     198
1234.9876     256
Run Code Online (Sandbox Code Playgroud)

现在,假设我想查询同样的事情,并且只获取客户端的ID,但仅限于t2.udf等于'194'的值不存在.所以,我只是得到

ID           
1234.9876    
Run Code Online (Sandbox Code Playgroud)

...结果是.

t-sql join left-join outer-join sql-server-2008

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

如何在python中找到字符串向量之间的所有组合

考虑以下两个字符串序列:

Salutation = ["Hello", "Hi"]
Names = ["Alice", "Matt", "Franck", "Julia"]
Run Code Online (Sandbox Code Playgroud)

我正在寻找将这些序列合并的简洁方法

["Hello_Alice", "Hi_Alice", "Hello_Matt", "Hi_Matt", "Hello_Franck", "Hi_Franck", "Hello_Julia", "Hi_Julia"]
Run Code Online (Sandbox Code Playgroud)

或与任何分隔符.

R中的等价物是:

c(outer(Salutations, Names, paste, sep="_"))
Run Code Online (Sandbox Code Playgroud)

python string character sequence outer-join

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

为什么这个LEFT OUTER JOIN不包括左边的所有主键

客户表共有1000个客户,其中2016年有1500个订单.但我们希望在2016财年显示所有客户的订单总数,无论客户是否在该风险中下订单.但SQL Server 2012中的以下查询仅显示1490.

我们在这里可能缺少什么?

SELECT c.CustomerID, count(*) AS TotalOrders
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
WHERE o.FiscalYear = '2016'
GROUP BY c.CustomerID
Run Code Online (Sandbox Code Playgroud)

更新:

以下查询仅返回1个记录(1491) - 仍然缺少9个记录.

SELECT c.CustomerID, count(*) AS TotalOrders
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID
                   AND o.FiscalYear = '2016'
GROUP BY c.CustomerID
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server outer-join sql-server-2012

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

为什么左外连接需要'ON'子句

据我所知,在两个表之间的左外连接(比如a和b)中,无论右表中行的值如何,都会检索连接左侧表的所有行.那么为什么我们需要一个'ON'子句来指定一个条件,如下所示:

select * from a LEFT OUTER JOIN b on a.some_column1 = b.some_column2;
Run Code Online (Sandbox Code Playgroud)

为什么需要声明"a.some_column1 = b.some_column2".

sql syntax join left-join outer-join

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

“开”左加入顺序

我通读了20多个标题相似的帖子,但找不到答案,因此如果有一个答案,请提前道歉。

我一直相信

select * FROM A LEFT JOIN B on ON A.ID = B.ID
Run Code Online (Sandbox Code Playgroud)

相当于

select * FROM A LEFT JOIN B on ON B.ID = A.ID
Run Code Online (Sandbox Code Playgroud)

但今天被告知“由于您有左连接,因此必须将其设为A = B,因为翻转后它将充当内部连接。

有什么道理吗?

sql outer-join

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