Mysql 联接两个表并在单个查询中返回数据和计数

Mysql 联接两个表并在单个查询中返回数据和计数,mysql,sql,Mysql,Sql,链接 我有以下表格: CREATE TABLE IF NOT EXISTS `project` ( `project_id` int(6) unsigned NOT NULL, `id_location` varchar (50) not null, PRIMARY KEY (`project_id`))DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `location` ( `location_id` int(6)

链接

我有以下表格:

CREATE TABLE IF NOT EXISTS `project` (
    `project_id` int(6) unsigned NOT NULL,
    `id_location` varchar (50) not null,
PRIMARY KEY (`project_id`))DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `location` (
    `location_id` int(6) unsigned NOT NULL,
    `parent_id` varchar (50) not null,
PRIMARY KEY (`location_id`))DEFAULT CHARSET=utf8;
INSERT INTO `project` (`project_id`, `id_location`) VALUES
  ('1', '4'),
 ('2', '4'),
 ('3', '4'),
 ('4', '5'),
 ('5', '5'),
 ('6', '6'),
  ('7', '7');
  
 INSERT INTO `location` (`location_id`, `parent_id`) VALUES
 ('2', '1'),
 ('3', '1'),
 ('4', '2'),
 ('5', '2'),
 ('6', '3'),
  ('7', '3');
我使用此查询获得以下结果:

SELECT project.project_id 
     , project.id_location
     , location.parent_id 
  FROM project
  LEFT 
  JOIN location  
    ON project.id_location = location.id



| project_id | id_location | parent_id   |
| 1          | 4           | 2           |
| 2          | 4           | 2           |
| 3          | 4           | 2           |
| 4          | 5           | 2           |
| 5          | 5           | 2           |
| 6          | 6           | 3           |
| 7          | 7           | 3           |
我想获得父项id的列表以及项目id的计数。我将在类似于parent_id=x的条件后使用

|parent_id   | countofproject_id 
| 2          | 5           
| 3          | 2  

    

这看起来像一个聚合:

SELECT l.parent_id, COUNT(*) 
FROM project p LEFT JOIN
     location l
     ON p.id_location = l.id
GROUP BY l.parent_id;
不清楚为什么在这里使用左连接。按第二个表中的列进行聚合是一种不好的做法。所以,您可能只需要一个内部联接

如果需要所有父ID,请反转表格:

SELECT l.parent_id, COUNT(p.id_location) 
FROM location l LEFT JOIN
     project p 
     ON p.id_location = l.id
GROUP BY l.parent_id;

提供的sqlfiddle链接请以表格文本形式向我们显示所需结果。所需结果是什么样的?请相应地编辑您的问题。您可以使用两个表之间的内部联接,并按家长分组。谢谢。您的解决方案适用于我的初始请求。我现在还想更进一步,我想得到如下结果:选择l.*,选择l.parent\u id,COUNT*从项目p内部连接位置l ON p.id\u location=l.id按l.parent\u id分组计数。从位置l。其中,l.parent_id=2,l.published=1。按count desc排序@加泰林。这回答了你在这里提出的问题。如果你没有问出你想问的问题,就要问一个新问题。这个问题得到了回答。