以下查询仅返回已下订单的区域的“区域名称”。
SELECT r.RegionName,
COUNT (DISTINCT o.uid)
FROM Orders AS o
LEFT JOIN Customers AS c ON o.CustomerID = c.uid
LEFT JOIN Regions AS r ON c.Region = r.uid
WHERE (r.RegionName NOT LIKE 'NULL')
AND (r.RegionName <> '')
AND (r.RegionName NOT LIKE 'Region 1')
AND (o.DateOrdered LIKE '7%2011%')
GROUP BY r.RegionName
ORDER BY r.RegionName
如何修改它,以便即使“ COUNT”为“ 0”时也显示所有区域名称?
您需要将JOIN
Regions更改为RegionsRIGHT JOIN
或将Regions作为FROM
表,然后JOIN
从此处更改为其他表。
我喜欢第二种方法,因为它对我来说似乎更直观。您在这里关心地区,并试图获取有关地区的信息,因此应该在FROM
(IMO)中:
SELECT
R.RegionName,
COUNT(O.uid)
FROM
Regions R
LEFT OUTER JOIN Customers C ON C.Region = R.uid -- I really don't like this naming convention
LEFT OUTER JOIN Orders O ON
O.CustomerID = C.uid AND
O.DateOrdered LIKE '7%2011%' -- Is your date really stored as a string? Ugh!
WHERE
R.RegionName <> 'NULL' AND -- This is VERY bad...
R.RegionName <> '' AND
R.RegionName <> 'Region 1'
GROUP BY
R.RegionName
ORDER BY
R.RegionName
问题内容: 我有两个表,一个是Employee,而邮寄Subscriptions Employee则如下所示: 名称(pk)| 姓| 年龄 邮件订阅 MailId(pk)| EmployeeName(fk)|描述| 日期 我想为每个客户订阅号,因此我尝试了以下查询: 它将为我提供邮件订阅中 具有 条目的每个员工的所有计数。 我的问题是我想查看所有员工的计数,包括没有条目的员工数(因此显示为0),我
问题内容: 我在MySql Company中有两个表:(cname,city)工作:(ename,cname,salary) 我想显示每个公司的员工人数,即使该人数为零。 例如 输出应为: 但是以下查询和其他类似查询仅显示那些至少拥有一名员工的公司: 如果我使用外部联接,则员工数为零的公司仍将显示在一行中,因此该选项也将退出。 怎么做? 问题答案: LEFT JOIN的经典案例:
SQL Server 2008 SQL查询显示IP地址(如果存在) 输出 IP_ADDR1_TEXT是 列强制转换(IP_ADDR1<0则0xFFFFFFFFF+IP_ADDR1否则IP_ADDR1 END/256/256/256&0xFF为VARCHAR)+“.”+强制转换(IP_ADDR1<0则0xFFFFFFFF+IP_ADDR1否则IP_ADDR1结束/256/256和0xFF为VARCH
我在做一个计算器应用程序,我用十进制格式来格式化我的数字。我的问题是我想让它显示像0,003这样的数字。但是逗号后面的2零直到我输入3才显示出来。请帮我修复这里的代码 添加“0”的代码
问题内容: 我在数据库中有下表: 现在,如果我运行以下查询: 我得到以下输出: 输出显示的所有值,以及每行中返回的值。 现在,如果我运行以下查询: 我得到以下输出: 我的问题是,在第一个示例中输出第二个 Diane的 功能与功能之间有什么区别? __ 问题答案: 是一个聚合函数,通常与子句结合使用。 是输出当前日期的日期函数。 据我所知,只有MySQL允许使用此语法而不使用该子句。由于您没有提供,
问题内容: 当我尝试在docker容器中运行Chrome时,出现以下错误:Gtk:无法打开显示::0 Dockerfile:(基于https://registry.hub.docker.com/u/jess/chromium/dockerfile) 构建并运行: 和错误: 问题答案: 我对铬不太了解,但是,当:-)我告诉X客户端连接到:0时,我的意思是连接到端口6000(或运行X服务器的任何设备)