После полдня головных болей, пытаясь выяснить двойное ВНУТРЕННЕЕ СОЕДИНЕНИЕ, я наконец понял это правильно:
SELECT product.id as product_id, count(purchase_vaucher.object_id) as purchased
FROM purchase_vaucher
INNER JOIN purchase on purchase.id = purchase_vaucher.object_id
INNER JOIN product on purchase.product_id = product.id
WHERE purchase.is_paid=1
GROUP BY product.id
ORDER BY purchased_amount desc;
О чем это: в основном, три таблицы: product
, purchase
, purchase_vaucher
(да, я знаю, что это «ваучер», но я не придумал схему). В основном, purchase
содержит сделанные покупки и обратную ссылку на product
. purchase_vaucher
содержит информацию о ваучерах и обратную ссылку на purchase
. Что мне было нужно из этого запроса: Для всех purchase
с is_paid=1
подсчитайте все ваучеры всех покупок с одинаковым идентификатором продукта и сгруппируйте их по идентификатору продукта.
Что мне нужно: приведенный выше запрос переведен как Propel Criteria
вызовы API.
Я сразу начинаю работать над этим, но буду рад, если смогу сэкономить время.
Спасибо.