私は2つのテーブルrelationでcountがXより大きい場合はSQLを選択しますか?
「注文は」「記事」
SELECT `orders`.* FROM `orders` INNER JOIN `articles` ON
`articles`.`orders_id` = `orders`.`id` where ????
との1対Nの関係はどのように私は記事にサブカウントを作り、とだけ注文を得ることができたを持っています4つ以上の記事?
ありがとうございました!
私は2つのテーブルrelationでcountがXより大きい場合はSQLを選択しますか?
「注文は」「記事」
SELECT `orders`.* FROM `orders` INNER JOIN `articles` ON
`articles`.`orders_id` = `orders`.`id` where ????
との1対Nの関係はどのように私は記事にサブカウントを作り、とだけ注文を得ることができたを持っています4つ以上の記事?
ありがとうございました!
あなたがこれを行うことができます:o.id
は(おそらく)orders
の主キーであるため、
SELECT o.*
FROM orders o INNER JOIN
articles a
ON a.orders_id = o.id
GROUP BY o.id
HAVING COUNT(*) >= 4;
これは、さえGROUP BY
とSELECT *
の合法的な使用です。
もう一つの方法は次のとおりです。
select o.*
from orders o
where (select count(*)
from articles a
where a.order_id = o.id
) >= 4;
これはarticles(order_id)
にインデックスを使用できるという利点を持っているので、より優れた性能を持つことができます。 HAVING
句を使用して、集計結果のフィルタと
使用アグリゲーションは
SELECT `o`.*
FROM `orders` o
INNER JOIN `articles` a
ON `a`.`orders_id` = `o`.`id`
GROUP BY o.id
HAVING COUNT(DISTINCT a.id) >=4
あなたがでとを有する基を試してみましたか? – sia
テーブルのデータとattrを入力してください – Gagantous