2017-07-03 3 views
-1

私はこの演習を解決しようとしている:他のテーブルにリンクしているSQLにJOINクエリを書くにはどうすればいいですか? (説明内の特定のq)

この照会の出力が親/介護者のタイトル、単一の列の最初の名前と姓、および活動の合計数が表示されるはずですその親/介護者に登録されているすべての子供が服用します。

これは私がこれまで持っているものです。

私の最初の列与える
SELECT CONCAT(carer_title, ' ', carer_fname, ' ', carer_sname) AS 'carer name' 
    FROM Carer; 

enter image description here

を、私は、これは完全なスキーマを見ずにトリッキーですが、ここの感謝関連情報は、あなたが私が情報を見逃していると思ったら教えてください。

スキーマ:Schema

関連するテーブルと列:

介護者 | carer_id | carer_title | carer_fname | carer_sname | carer_phone | carer_address1 | carer_address2 | carer_town | carer_pcode

子供 | child_id | child_fname | child_sname | child_gender | child_dob | child_carer | child_school

子育て(子供と活動を結びつける表は外部キーで構成されています)| child_id |アクティビティID

アクティビティ |アクティビティID |アクティビティ名|アクティビティ日| activity_fee

各介護者に登録されているすべての子供が取った活動の合計数を見つける列を追加するにはどうすればよいですか?

+0

'child carer'はスペースのある列名ですか? 'Carer.carer_id'に対応する外部キーですか? – trincot

+0

* "すべての子どもが取った活動の総数" *:すべての子どもが参加する活動だけを数えなければならないということですか?または、少なくとも* 1人の子供が参加している活動を数えますか? – trincot

+0

* child_carer、はい。少なくとも1人の子供が参加する – AKL012

答えて

1

あなたは他の関連するテーブルを結合し、グループごとに数えることができる:

select concat(carer_title, ' ', carer_fname, ' ', carer_sname) as `carer name`, 
      count(*) `number of activities` 
from  carer 
left join child on child.child_carer = carer.carer_id 
left join childactivity on childactivity.child_id = child.child_id 
group by carer.id; 

だけ明確な活動はとても2人の子供がcount(distinct childactivity.activity_id)count(*)を交換、その後、同じ活動に参加したときに二度数えていない、カウントする必要がある場合

関連する問題