2017-10-15 13 views
0

私は2つのテーブルrelationでcountがXより大きい場合はSQLを選択しますか?

注文は」「記事

SELECT `orders`.* FROM `orders` INNER JOIN `articles` ON 
`articles`.`orders_id` = `orders`.`id` where ???? 

との1対Nの関係はどのように私は記事にサブカウントを作り、とだけ注文を得ることができたを持っています4つ以上の記事?

ありがとうございました!

+0

あなたがでとを有する基を試してみましたか? – sia

+0

テーブルのデータとattrを入力してください – Gagantous

答えて

2

あなたがこれを行うことができます: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 BYSELECT *の合法的な使用です。

もう一つの方法は次のとおりです。

select o.* 
from orders o 
where (select count(*) 
     from articles a 
     where a.order_id = o.id 
    ) >= 4; 

これはarticles(order_id)にインデックスを使用できるという利点を持っているので、より優れた性能を持つことができます。 HAVING句を使用して、集計結果のフィルタと

2

使用アグリゲーションは

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 
関連する問題