2017-07-05 11 views
-3

私は2つのテーブルがあります。SQL - その親の子の数に基づいて親のすべての行を取得する方法?

  • 親テーブル:ID、名前
  • 子テーブル:ID、名前、id_parent

さて、私は親テーブルの行を一覧表示したいが、数行を持っているが子供の数は3です。

+0

https://stackoverflow.com/help/how-to-ask – jarlh

+0

詳しいことができますか?問題の内容を伝えるのは難しいです。 – pablochan

+0

ようこそスタックオーバーフロー。 [ツアー](https://stackoverflow.com/tour)にアクセスするには、少し時間を取ってください。また、[how-to-ask](https://stackoverflow.com/questions/how-to-ask)を読んであなたの質問のためのより良い答え –

答えて

1

いくつかの方法で実行できます。 HAVINGで、

select * 
from parents p 
where (select count(*) from children c 
     where c.id_parent = p.id) = 3 

またはGROUP BY:最も簡単にはおそらく子供の数をカウントするWHERE句で相関サブクエリである

select p.* 
from parents p 
join children c 
    on c.id_parent = p.id 
group by p.id 
having count(*) = 3 
+0

ああ、これは素晴らしい解決策です。ありがとうございます。 Btw、その結果の子供の数を取得したい場合、どのように私はクエリを編集できますか? –

0

私はこのような私のクエリを編集します。

select p.*, count(c.id) 
from parents p 
join children c 
    on c.id_parent = p.id 
group by p.id 
having count(*) = 3 

大丈夫ですか? jarlh

+0

うまく見える! – jarlh

+0

多くのおかげで、jarlh! –

+0

返品データが見つかりませんでした。 count(*)= 0を使用すると、空に戻ります。 –

関連する問題