1

我怎样才能加入两个表并使第二个可选?

SELECT t1.title,SUM(t2.seconds) AS seconds 
FROM operation t1 
  LEFT JOIN workhours t2 ON t1.id = t2.pid AND t1.status='0' 
ORDER BY t1.tstamp DESC

此查询仅显示一个结果,但还有第二个结果没有我们的任何工作时间。即使 t2 中没有任何内容,我如何确保始终显示来自 t1 的数据?

4

3 回答 3

4

您需要添加GROUP BY t1.title

SELECT t1.title,SUM(t2.seconds) AS seconds 
FROM operation t1 LEFT JOIN workhours t2 ON t1.id = t2.pid AND t1.status='0' 
GROUP BY t1.title
ORDER BY t1.tstamp DESC

一般来说,如果标题不是唯一的,您应该按唯一键分组。

于 2011-06-22T16:05:12.410 回答
0

如果您需要始终获得第一个结果与第二个不匹配的结果,因此如果另一个表与第二个表没有任何匹配结果,则必须使用左外连接,它将始终显示结果如果第二个与联接匹配,则第一个独立。

于 2011-06-22T16:15:14.813 回答
0

看来问题可能出在您选择的“SUM(t2.seconds)”参数中。

尝试添加 ISNULL(SUM(t2.seconds), 0)。

如果这不起作用,您可以尝试使用 SQL IF 语句或 CASE 并检查 t2 上的列是否存在空值。

于 2011-06-22T16:27:03.847 回答