![](/img/trans.png)
[英]Mysql> How to join data of 2 tables with single Query? (Select * and COUNT)
[英]Join two tables and return data and count in a single query
我有這個表:
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 |
我想獲取 parent_id 的列表以及 project_id 的計數。 我將在類似 where 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;
目前還不清楚您為什么在這里使用LEFT JOIN
。 按第二個表中的列聚合是一種不好的做法。 所以,你可能只想要一個INNER JOIN
。
如果你想要所有的父 id s,那么反轉表:
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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.