2016-04-23 86 views
0

我想從表a中的表b添加數據,但不幸的是,完全外連接在mysql中不起作用。我也曾嘗試工會,但它引發錯誤,因爲我的語句有GROUP BY和ORDER BY關鍵字在mysql中連接兩列

SELECT COUNT(ReviewedBy) AS TotalReviews, OrganizationId, SUM(Rating) AS TotalStars, COUNT(Rating) AS TotalRatings, (
     SUM(Rating)/COUNT(Rating) 
     ) AS AverageRating 
     FROM `tbl_reviews` 
     WHERE ReviewType = 'shopper' 
     AND ReviewFor = 'org' 
     AND OrganizationId 
       IN (

      SELECT OrganizationId 
     FROM tbl_organizations 
     WHERE CategoryID =79 
     ) 
     GROUP BY OrganizationId 
     ORDER BY AverageRating DESC 

This is what i'm getting from the above statement

我想要得到的結果organizationId 21點的數據,但我沒有得到的結果,因爲它不存在於'tbl_review'表 click here to see the table b

我怎樣才能得到期望的結果?

回答

1

你並不需要一個完整的,但一個LEFT JOIN:

SELECT COUNT(ReviewedBy) AS TotalReviews, o.OrganizationId, 
    SUM(Rating) AS TotalStars, COUNT(Rating) AS TotalRatings, 
    (SUM(Rating)/COUNT(Rating)) AS AverageRating 
FROM tbl_organizations AS o 
LEFT JOIN `tbl_reviews` AS r 
    ON o.OrganizationId = r.OrganizationId 
AND ReviewType = 'shopper' -- conditions on inner table 
AND ReviewFor = 'org'  -- must be moved to ON 
WHERE CategoryID =79 
GROUP BY o.OrganizationId 
ORDER BY AverageRating DESC 

你爲什麼不使用AVG代替SUM/COUNT

+0

將使用AVG從現在 和 感謝豬頭... 你救了我小時 –

+0

@SumitBhatia。 。 。如果這回答你的問題,那麼你應該接受它。 –

0

您是否嘗試過:

from organization 
left outer join tbl_reviews 
on organization.ID = tbl_reviews.organization is 

你的where子句?我不認爲你需要一個完整的外部聯接在這種情況下...左外連接應該做