2014-12-03 4 views
-1

Я хочу, чтобы запустить этот запрос:Как сравнить значения из объединенной таблицы с перекрестным соединением? MySQL

SELECT business.name as businessName i.ratingCount , i.ratingSum 
FROM business 
cross join 
    (
    SELECT SUM(rating.rating) as ratingSum,COUNT(rating.bussId) as ratingCount 
    FROM rating 
    WHERE rating.bussId = business.bussId 
)i 

, но я получил эту ошибку Unknown column 'business.bussId'! Как это исправить?

I don't want to use left join ! 
+0

Вы, вероятно, хотите, чтобы означать «бизнес» не так последовательно. Или, вы знаете, правописание этого права повсюду также является вариантом. Но важна последовательность. –

+0

@MattGibson Я исправлю это! но это не проблема, вы знаете, как это исправить? – david

ответ

0

вам нужно использовать его как коррелируют подзапрос

SELECT business.name as businessName, 
     (select sum(rating.bussId) 
     from rating 
     where rating.bussId = business.bussId 
     ) as ratingSum, 
     (select count(rating.bussId) 
     from rating 
     where rating.bussId = business.bussId 
     ) as ratingCount 
FROM business 

или вы можете использовать левое соединение и сделать группу по

SELECT business.name as businessName, 
     sum(rating.bussId) as ratingSum, 
     count(rating.bussId) as ratingCount 
FROM business 
left join rating 
on business.bussId = rating.bussId 
group by business.name 
+0

благодарю вас за ответ, но почему я не мог сделать это с помощью креста? – david

+0

@David, вы можете получить доступ к таблице со стороны коррелированного подзапроса в том же выборе, который недействителен в перекрестном соединении. – radar