Я пытаюсь подсчитать количество покупок и голосов «за» / «против» для всех товаров, которые соответствуют заданному поисковому запросу. К сожалению, поскольку я настроил свой запрос сейчас, количество покупок и голосов умножается на таинственный коэффициент 22, который я не могу понять, откуда он.
В качестве примера для одного из пунктов: голоса за покупки, за и против должны составлять 7, 2 и 1 соответственно, но вместо этого они составляют 154, 44 и 22.
вот мой код SQL:
SELECT *
sum(purchaseyesno) as tots,
sum(rating=1) as yes,
sum(rating=0) as no
from items
join items_purchased
on items_purchased.item_id=items.item_id
join accounts
on items.account_id=accounts.account_id
like subject='%album by joe%' or description='%album by joe%'
group by item_id
order by tots desc, yes desc
Вот некоторые примеры данных:
subject tots yes no full_name
album by joe 154 44 22 joe smith
album by fred 88 44 0 fred jones
Вот как я хотел бы, чтобы данные выглядели:
subject tots yes no full_name
album by joe 7 2 1 joe smith
album by fred 4 2 0 fred jones
Может ли кто-нибудь помочь мне разобраться, что здесь происходит? Я не могу понять этот коэффициент 22, который сохраняется, несмотря на изменение group by
и других вещей (то есть, это число 22 не зависит от # возвращаемых строк).