2016-04-23 87 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子句?我不认为你需要一个完整的外部联接在这种情况下...左外连接应该做