我正在寻找查询以从数据库中的两个表中获取输出,如下所示
table1-cities ----> ------------- Table2----> -------------------------
| City | | Person | City |
------------- -------------------------
| Delhi | | Bob | Delhi |
| Mumbai | | Alice | Delhi |
| Pune | | Tim | Pune |
------------- -------------------------
Output----> ---------------------------
| City | No.of persons |
---------------------------
| Delhi | 2 |
| Mumbai | 0 |
| Pune | 1 |
----------------------------
我尝试了某种方式,但我没有得到正确的输出。
那我该怎么办?
提前致谢。
此致。
答案 0 :(得分:6)
试试这段代码:
private void HookHtmlDocumentOnClick()
{
var document = (IAcroAXDocShim)WebBrowserControl.Document;
// Just a test
var obj = document as AcroPDF;
obj.OnMessage += obj_OnMessage;
}
对于所有零值,请使用左连接
WebBrowserControl.MouseDown += WebBrowserControl_MouseDown;
答案 1 :(得分:3)
试试这个
select c.City,
count(p.City) as Number_OF_Persons
from City as c
left Join Person as p on c.City = p.City
group by c.City
答案 2 :(得分:1)
试试这个..
select t1.city,
Count(t2.city)
from table1 t1
left join table2 t2 on t2.city=t1.city
group by t1.city
答案 3 :(得分:1)
一些事情:
Id
作为主键。 City
表(Id)的外键约束。 您可以使用左连接来获得所需内容:
Select
c.city,
COUNT(p.cityId) "NoOfPerson"
from
TabCity c
left join TabPerson p on c.Id= p.cityId
group by
c.city
此处,cityId
是TabPerson
表中的外键列,c.Id
是TabCity
表中的主键列
答案 4 :(得分:1)
只要您不添加可能会改变匹配行数的条件,您就可以在加入之前进行计数,这通常更有效:
Select
c.City,
COALESCE(p.cnt, 0) "No.of persons" -- change NULL to zero for missing cities
from cities c
left join
(
Select City, count(*) as cnt
From persons
Group by City
) p
on c.City= p.City
答案 5 :(得分:1)
试试这个:
Select City, Sum(Cnt) as NoOfPersons From
(Select City, count(*) as Cnt from Table1
Group By City
Union
Select City, count(*) as Cnt from Table2
Group By City)
Group By City
答案 6 :(得分:1)
我试过"选择city,count(city)from table2 group by group" -
这没关系,但不容易阅读。由于这是您想要计算每个城市的记录,您应该这样说:count(*)
。这个查询当然不会显示孟买,因为它不在表格中。为了显示孟买,您必须在查询中包含cities表。最简单的方法是不加入表格,而只是选择所需的计数:
select city, (select count(*) from table2 where table2.city = table1.city) as no_of_persons
from table1;
这会显示孟买计数为空。如果你想要零,请使用COALESCE:
select
city,
coalesce((select count(*) from table2 where table2.city = table1.city),0) as no_of_persons
from table1;
如其他人所示,您也可以将table2外连接到table1,然后进行分组和计数。但是,正如您已经看到的那样,这有点容易出错,因为您在计算记录时通常不会使用count(*)
,而必须使用count(person)
(或{{1}为了那个问题),为了不计算外连接的记录。