開発環境はSQLサーバー2000です。
下記のような親子関係のテーブルがあった場合に、【結果】のような結果を得れるようなSQL文を教えていただきたいです。
【親】
--------------------------------
|品番 |品名
--------------------------------
|1 |ラーメン
--------------------------------
|2 |カレー
--------------------------------
|3 |うどん
--------------------------------
【子供】
--------------------------------
|品番 |枝番 |食べた日
--------------------------------
|1 |1 |1/1
--------------------------------
|1 |2 |1/2
--------------------------------
|3 |1 |1/3
--------------------------------
|3 |2 |1/4
--------------------------------
|3 |3 |1/5
--------------------------------
|3 |4 |1/6
--------------------------------
【結果】
親子テーブルを連結したSQLを実行すると
--------------------------------
|品番 |品名 |食べた回数
--------------------------------
|1 |ラーメン|2
--------------------------------
|2 |カレー |0
--------------------------------
|3 |うどん |4
--------------------------------
のような結果が帰ってくるSQLが作成可能でしたらご教授いただけますようよろしくお願い致します。
No.1ベストアンサー
- 回答日時:
親テーブルと(子供テーブルを品番でGROUP BYしたもの)を外部結合してやればできます。
お試し
DECLARE @親 TABLE
( [品番] INT, [品名] NVARCHAR(8) )
DECLARE @子供 TABLE
( [品番] INT, [枝番] INT, [食べた日] DATETIME )
INSERT INTO @親 ( [品番], [品名] )
VALUES ( 1, N'ラーメン' )
INSERT INTO @親 ( [品番], [品名] )
VALUES ( 2, N'カレー' )
INSERT INTO @親 ( [品番], [品名] )
VALUES ( 3, N'うどん' )
INSERT INTO @子供 ( [品番], [枝番], [食べた日] )
VALUES ( 1, 1, '2009-01-01' )
INSERT INTO @子供 ( [品番], [枝番], [食べた日] )
VALUES ( 1, 2, '2009-01-02' )
INSERT INTO @子供 ( [品番], [枝番], [食べた日] )
VALUES ( 3, 1, '2009-01-03' )
INSERT INTO @子供 ( [品番], [枝番], [食べた日] )
VALUES ( 3, 2, '2009-01-04' )
INSERT INTO @子供 ( [品番], [枝番], [食べた日] )
VALUES ( 3, 3, '2009-01-05' )
INSERT INTO @子供 ( [品番], [枝番], [食べた日] )
VALUES ( 3, 4, '2009-01-06' )
SELECT * FROM @親
SELECT * FROM @子供
SELECT
P.[品番] AS [品番],
P.[品名] AS [品名],
COALESCE(C.[回数], 0) AS [食べた回数]
FROM
@親 AS P
LEFT OUTER JOIN
(
SELECT
C.[品番] AS [品番],
COUNT(C.[枝番]) AS [回数]
FROM
@子供 C
GROUP BY C.[品番]
) AS C
ON P.[品番] = C.[品番]
No.2
- 回答日時:
【親】と【子供】左外部結合して、品番でグループ化し、枝番をカウントして食べた回数を導出すればよいかと。
【親】がparentテーブル、【子供】がchildテーブルという名前とした場合、下記のようになるかと。
-----------------------------------------------------------------
SELECT
p.品番,
p.品名,
COUNT(c.枝番) AS 食べた回数
FROM
parent p LEFT OUTER JOIN child c ON p.品番 = c.品番
GROUP BY
p.品番, p.品名;
-----------------------------------------------------------------
ちなみにSELECT選択列に含めるため、品名もGROUP BY句に指定してやる必要も有ります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- SQL Server これをSQL文で出来るでしょうか? 1 2023/03/26 02:16
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
- Oracle sqlのupdate文で質問です。 テーブルBの番号をキーにテーブルAの身長をテーブルBの身長に更新 2 2022/11/02 15:15
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
家の前の道路で子供が遊んでた...
-
実の子どもと縁を切るにはどう...
-
子供のスマホのGmailに親のGmai...
-
子連れで居酒屋に行くのはそん...
-
電車でうるさい子供をどうして...
-
子供の友達の親の車でプールに...
-
子育てなんか正解がなく責任だ...
-
貧乏は子どもを作っちゃだめで...
-
子供嫌いな方へ質問…子供の声な...
-
子供に気持ち悪いと言われます...
-
子供の鳴き声とか騒がしいのが...
-
お小遣いをもらっている学生で...
-
電車で「ママー、座りたいー」...
-
社会人になっている子供なら 親...
-
電車での子供の泣き声について
-
勝手に産みやがって!という子...
-
なんか厳しい親に育てられた子...
-
キッズラインは嫌いですか?
-
親としては子供に精神科行かせ...
-
子供がいないと本当に老後は大...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家の前の道路で子供が遊んでた...
-
実の子どもと縁を切るにはどう...
-
子供のスマホのGmailに親のGmai...
-
子供の友達の親の車でプールに...
-
子連れで居酒屋に行くのはそん...
-
子供に、「相手の親が留守の家...
-
子供を置いて旅行する事をどう...
-
金と時間の無駄
-
子供に気持ち悪いと言われます...
-
貧乏は子どもを作っちゃだめで...
-
子供の鳴き声とか騒がしいのが...
-
「子供いらない」って強がってる...
-
子供嫌いな方へ質問…子供の声な...
-
中学生にガラケーしか与えない...
-
子供が発達障害や境界知能だっ...
-
子供が友達の携帯を壊してしま...
-
勝手に産みやがって!という子...
-
電車で「ママー、座りたいー」...
-
電車でうるさい子供をどうして...
-
子供がいないと本当に老後は大...
おすすめ情報