【发布时间】:2011-07-21 19:20:17
【问题描述】:
我很确定我需要在我的表上进行左外连接,但我不确定这是否 100% 正确或在 mySQL 中编写它们的语法。
我写了这个查询:
select m.mechanic_id,
m.mechanic_name,
m.city,
m.state,
count(mr.mechanic_id) as num_ratings,
round(avg(mr.quality_id),2) quality_rating
round(avg(mr.friendly_id),2) friendly_rating,
round(avg(mr.professional_id),2) professional_rating
from mechanic m, mechanic_rating mr, rating r
where m.mechanic_id in (1)
and m.mechanic_id = mr.mechanic_id
and mr.quality_id = r.rating_id(+) <-- these cause issues
and mr.friendly_id = r.rating_id(+) <-- these cause issues
and mr.professional_id = r.rating_id(+) <-- these cause issues
group by mechanic_id
(+) 是在 oracle 中进行外连接的一种方法,我不确定如何在此查询中手动写出外连接。我什至不确定我是否将它们放在正确的列上。
我的表结构是这样的
机械表
|mechanic_id|mechanic_name|city|state|zip|
|PK |
评分表
|rating_id|rating |
|1 |terrible|
|2 |bad |
etc.
Mechanic_Rating 表
|mechanic_rating_id|mechanic_id|quality_id|friendly_id|professional_id|
|unique auto inc |FK |
quality_id、friendly_id 和 Professional_id 都应该是评级表中 rating_id 的外键。
如果我从查询中删除 (+),我得到的结果为零,所以我认为问题在于我需要进行左外连接。如果您需要更多信息,请告诉我。
【问题讨论】: