我敢肯定,我需要做對我的表左外連接,但我不知道這是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,友好_id和professional_id都應該是評級表中rating_id的外鍵。
如果我從我的查詢起飛(+),我得到結果爲零,所以我在想,問題是,我需要做的左外連接。讓我知道你是否需要更多信息。
我在我的應用程序中使用了一個包含一個或多個ID的變量。我只用「1」來測試我的查詢。 – Catfish 2011-03-24 02:44:11
我假設這個變量是一個表變量?否則,你不需要做一個Group By ... – 2011-03-24 14:36:37