更改 mysql 查询以组合多列而不是单独的行
Changing mysql query to combine multiple columns instead of of seperate lines
我有 2 个这样的表:
Table: Company
id| Name | Area
1 | Company A | New York
2 | Company B | New York
3 | Company C | Chicago
Table: Service
id| Type
1 | Service
1 | Delivery
2 | Hotel
2 | Restaurants
3 | Movers
我想像这样获得纽约的结果(不包括芝加哥):
Name | Area | Type
Company A | New York| Service, Delivery
Company B | New York| Hotel, Restaurants
但我却得到了这个:
Name | Area | type
Company A | New York | Service
Company A | New York | Delivery
Company B | New York | Hotel
Company B | New York | Restaurants
我尝试使用 distinct 和 concat 来解决我的问题,但查询并没有结束,而是在 运行ning 超过 6 秒后超时。如果我 运行 一个查询来获得我现在得到的结果,我会在不到 1 秒的时间内得到结果。
以下是我到目前为止尝试过的查询:
select p1.Name,
GROUP_CONCAT(p2.Type) from company as p1, service as p2
GROUP BY p1.CompanyName
LIMIT 10;
结果:超时
select DISTINCT company.Name from company
LEFT JOIN service
ON company.Number = service.Number AND service.Type LIKE '% York'
Limit 50;
结果:永无止境(甚至没有超时)
select p1.Name, p2.type from company as p1, service as p2
where p1.id = p2.id
LIMIT 10;
结果:
显示真正混乱的结果,这是不可能的:
Name | Type
Company A | Hotel
Company B | Delivery
Company B | Restaurants
数据库最初是 Microsoft Access,我在那里得到了这样的结果,不熟悉 Microsoft Access 我认为 Microsoft 一定有问题并试图在 mysql 中执行查询,但同样那里发生的问题...如果我尝试手动统计显示的数据根本不统计,这让我真的很困惑...有人可以调查我的查询并告诉我我做错了什么吗?
谢谢!
使用内部联接获取匹配的记录并按公司 ID 对结果进行分组。
这里是查询:
select c.name,c.area,group_concat(s.Type) as type
from Company c inner join service s on c.id=s.id
where c.area='New York'
group by s.id;
试试这个:
SELECT c.Name, c.Area, GROUP_CONCAT(s.Type SEPARATOR ', ') AS TYPE
FROM Company AS c
LEFT JOIN Service AS s ON c.id = s.id
WHERE c.Area = 'New York'
GROUP BY c.id;
我有 2 个这样的表:
Table: Company
id| Name | Area
1 | Company A | New York
2 | Company B | New York
3 | Company C | Chicago
Table: Service
id| Type
1 | Service
1 | Delivery
2 | Hotel
2 | Restaurants
3 | Movers
我想像这样获得纽约的结果(不包括芝加哥):
Name | Area | Type
Company A | New York| Service, Delivery
Company B | New York| Hotel, Restaurants
但我却得到了这个:
Name | Area | type
Company A | New York | Service
Company A | New York | Delivery
Company B | New York | Hotel
Company B | New York | Restaurants
我尝试使用 distinct 和 concat 来解决我的问题,但查询并没有结束,而是在 运行ning 超过 6 秒后超时。如果我 运行 一个查询来获得我现在得到的结果,我会在不到 1 秒的时间内得到结果。
以下是我到目前为止尝试过的查询:
select p1.Name,
GROUP_CONCAT(p2.Type) from company as p1, service as p2
GROUP BY p1.CompanyName
LIMIT 10;
结果:超时
select DISTINCT company.Name from company
LEFT JOIN service
ON company.Number = service.Number AND service.Type LIKE '% York'
Limit 50;
结果:永无止境(甚至没有超时)
select p1.Name, p2.type from company as p1, service as p2
where p1.id = p2.id
LIMIT 10;
结果: 显示真正混乱的结果,这是不可能的:
Name | Type
Company A | Hotel
Company B | Delivery
Company B | Restaurants
数据库最初是 Microsoft Access,我在那里得到了这样的结果,不熟悉 Microsoft Access 我认为 Microsoft 一定有问题并试图在 mysql 中执行查询,但同样那里发生的问题...如果我尝试手动统计显示的数据根本不统计,这让我真的很困惑...有人可以调查我的查询并告诉我我做错了什么吗? 谢谢!
使用内部联接获取匹配的记录并按公司 ID 对结果进行分组。
这里是查询:
select c.name,c.area,group_concat(s.Type) as type
from Company c inner join service s on c.id=s.id
where c.area='New York'
group by s.id;
试试这个:
SELECT c.Name, c.Area, GROUP_CONCAT(s.Type SEPARATOR ', ') AS TYPE
FROM Company AS c
LEFT JOIN Service AS s ON c.id = s.id
WHERE c.Area = 'New York'
GROUP BY c.id;