mysql 中的内部联接问题

Issues with inner join in mysql

我想将一个查询的输出与 mysql 中的第二个 table 相结合:

(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

第二个table的结果:

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

有什么方法可以将第一个查询与第二个 table 结合起来并提取健康等级?我在尝试类似的东西:

(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 中显示错误?我在这里出错的任何指示?

您缺少外部 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)

你可以这样做:

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