我想将一个查询的输出与mysql中的第二个表连接:
(select
A.name, A.address, sum(C.penalty_points) as points
from
restaurant as A
inner join
inspection as B ON A.restaurant_id = B.restaurant_id
inner join
violation as C ON C.violation_id = B.violation_id
group by A.name )
输出:
name address points
Kitchen 305 660 Washington Ave 2
PL8 Kitchen Southeast 17th Street in Fort Lauderdale 11
Prime One Twelve 112 Ocean Drive 5
Seasons 52 Palm Beach Gardens 3
Six Tables 32 East Atlantic 8
Table 26 Park Racks Downtown Eatery 2
第二张表的结果:
select * from health_points
输出:
points health_grade
0 A
1 A
2 A
3 A
4 A
5 B
6 B
7 B
8 B
9 B
10 B
11 C
12 C
13 C
14 C
15 C
17 FAIL
18 FAIL
19 FAIL
有没有办法可以将第一个查询与第二个表结合起来并提取健康等级?我正在尝试这样的事情:
(select
A.name, A.address, sum(C.penalty_points) as points
from
restaurant as A
inner join
inspection as B ON A.restaurant_id = B.restaurant_id
inner join
violation as C ON C.violation_id = B.violation_id
group by A.name ) as D inner join health_points as E on D.points = E.points
但它在mysql中显示错误?我在这里错了的任何指示?
答案 0 :(得分:2)
您缺少外部SELECT
子句:
SELECT D.*, E.health_grade
FROM (
SELECT A.name, A.address, sum(C.penalty_points) as points
FROM restaurant A
JOIN inspection B ON (A.restaurant_id = B.restaurant_id)
JOIN violation C ON (C.violation_id = B.violation_id)
GROUP BY A.name
) D
JOIN health_points E ON (D.points = E.points)
答案 1 :(得分:2)
你可以这样做:
SELECT
e.health_grade,
d.points
FROM
(
select
A.name, A.address, sum(C.penalty_points) as points
from restaurant as A
inner join inspection as B ON A.restaurant_id = B.restaurant_id
inner join violation as C ON C.violation_id = B.violation_id
group by A.name, A.address
) as D
inner join health_points as E on D.points = E.points