このSQLクエリから基準クエリを作成したいのですが:
SELECT * FROM `Product` p
ORDER BY (SELECT COUNT(*) FROM `Sale` WHERE `product_id` = p.id) DESC
サブクエリでそれを行う方法が見つかりません...
暗黙的な結合を試してください。
select *
from (
select
p.*,
(select count(*) from sale s where s.product_id = p.id) as cnt
from product p
)a
order by cnt desc
Order By
パーツに存在する列にのみ適用されますselect
。
したがって、基本的には次のようなものが機能します。
SELECT Group, COUNT(*) as total
FROM table
GROUP BY Group
ORDER BY total DESC
したがって、あなたの場合、次のようなことができます。
SELECT *, (SELECT COUNT(*) FROM `Sale` WHERE `product_id` = p.id) as total FROM `Product` p
ORDER BY total DESC
注:これは完全にテストされていません。