Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 联接中的SQL计数_Mysql_Sql Server_Count_Inner Join - Fatal编程技术网

Mysql 联接中的SQL计数

Mysql 联接中的SQL计数,mysql,sql-server,count,inner-join,Mysql,Sql Server,Count,Inner Join,我只是想统计一下(每个客户的车数) 所以我试着这样: SELECT tbl_Clients.FirstName, tbl_Clients.LastName, tbl_Clients.Phone, COUNT(*) AS VehiculeTotal FROM tbl_Contrat INNER JOIN tbl_Clients ON tbl_Contrat.Client = tbl_Clients.ID GROUP BY tbl_Contrat.Client 简单的方法是: SELECT

我只是想统计一下(每个客户的车数)

所以我试着这样:

SELECT tbl_Clients.FirstName, tbl_Clients.LastName, tbl_Clients.Phone,
COUNT(*) AS   VehiculeTotal
FROM tbl_Contrat 
INNER JOIN tbl_Clients ON tbl_Contrat.Client = tbl_Clients.ID
GROUP BY tbl_Contrat.Client
简单的方法是:

SELECT FirstName, LastName, Phone, COUNT(*) AS VehiculeTotal
FROM tbl_Clients, tbl_Contrat GROUP BY Client
但看起来我也遇到了同样的问题:

Column 'tbl_Clients.FirstName'(LastName and phone too) is invalid in the 
select list because it is not contained in
either an aggregate function or the GROUP BY clause.
但我不想和他们在一起

我还需要显示名字、姓氏和电话


当您使用group by时,请提供帮助。结果将根据分组依据的列划分为唯一的组。在您的情况下,tbl_client.id应该是唯一的,因此,如果group by中使用的任何其他列都不是唯一的,则无关紧要。假设您有两个名为John Doe的客户机,客户机id为1和2。分组仍然会根据id将它们分开,并且不会发生进一步的分组

此查询应满足您的要求。我冒昧地为表名使用了别名,以使其更简短、更可读

SELECT cli.FirstName, cli.LastName, cli.Phone, COUNT(*) AS  VehiculeTotal
FROM tbl_Contrat con
INNER JOIN tbl_Clients cli ON con.Client = cli.ID
GROUP BY cli.id, cli.FirstName, cli.LastName
请注意,通过使用内部联接,您消除了由于某种原因可能没有任何汽车的任何客户端,这当然可以,但如果您希望返回没有汽车的客户端,则应使用左联接,如下所示:

SELECT id, firstname, lastname, COUNT(tbl_Contrat.Client) AS VehiculeTotal
FROM tbl_Clients 
LEFT JOIN tbl_Contrat ON tbl_Contrat.Client = tbl_Clients.ID
GROUP BY id, firstname, lastname

您可以通过将它们包括在
组中。如果您已经按照(可能是唯一的)客户端ID进行分组,那么将不太唯一的
名字
姓氏
电话
也包括在内是无害的。试一试,您就会明白。另外,由于您收到一条消息,要求使用
分组方式
,因此我假设您在SQL Server上,而不是在MySQL上。如果这是真的,请从您的问题中删除MySQL标记。