質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

解決済

1回答

676閲覧

[SQLite×vb]点数を合計して上位4つを選出し、それらを合計する

mirai0322

総合スコア24

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

1クリップ

投稿2019/02/02 16:07

編集2019/02/03 03:39

やりたいこと

集計ソフトをVisualBasicで作成しています。データベースにSQLite(3.24.0)を使用しています。
以下にテーブル構造を示します。
スコアデータテーブルの前半点数と後半点数を合計し、グループごとにその合計した点数が高い順に4人選び、その4人の点数を合計してグループの点数としたいのですが、どのようにSQLを書いたらいいのかわかりません。
教えていただけるとありがたいです。

テーブル構造

グループマスタ

列名備考
IDInteger主キー,AutoIncrement
グループ名Text

プレイヤーマスタ

列名備考
IDInteger主キー,AutoIncrement
氏名Text
生年月日Text
グループIDInteger外部キー(グループマスタのID列を参照)

スコアデータ

列名備考
プレイヤーIDInteger主キー,外部キー(プレイヤーマスタのID列を参照),AutoIncrement
前半点数Integerデフォルト値(0)
後半点数Integerデフォルト値(0)

やったこと

SQL

1SELECT プレイヤーID, (前半点数+後半点数) AS 合計点数 2FROM スコアデータ

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/02/02 23:10

クエリはどこまで自分で書けていますか? どこでつまずいていて、何がわかれば解決するのでしょう?
退会済みユーザー

退会済みユーザー

2019/02/02 23:13

SQLite のクエリの問題で VB やVB.NET は関係ないのでは? であれば、それらのタグは外していただくようお願いします。
mirai0322

2019/02/03 02:16

点数を合計するところまでできていて、グループの上位4人の点数を合計するところでつまずいています。 クエリだけで解決できるかわからなかったのでそれらのタグもつけました。すいません。
退会済みユーザー

退会済みユーザー

2019/02/03 03:23

そのクエリを質問欄に追記できませんか?
退会済みユーザー

退会済みユーザー

2019/02/03 03:40

> クエリだけで解決できるかわからなかったのでそれらのタグもつけました。 VB.NET アプリのコードで処理するための制約(たとえば、こういう風に表示したいからこういう形でデータを取得しなければならないというような制約)があるのでしょうか?
mirai0322

2019/02/03 03:42

特にそのような制約はないです、
guest

回答1

0

ベストアンサー

SELECT プレイヤーID, (前半点数+後半点数) AS 合計点数 FROM スコアデータ

ほとんど何もできてないようですね。

SQLite でカーソルが使えるかどうかわかりませんが、使えるのであればカーソルを使ってはいかがですか?

質問者さんの DB では試せませんが、Microsoft の SQL Server 用サンプルデータベース Northwind の Catagories と Products テーブルを例に使うと、(Catagories が「グループマスタ」、Products が「プレイヤーマスタ」+「スコアデータ」に該当すると考えてください):

イメージ説明

以下のようになります。なお、TOP 4 で上位を取得しているだけで、同点があった場合の処理は考えていませんので注意してください。

イメージ説明

SQLite でカーソルが使えない場合は VB.NET のコードで処理することを考えてはいかがですか?

まず「グループマスタ」から全 ID を取得し、それをベースにループを回して「プレイヤーマスタ」+「スコアデータ」にグループ別にクエリを投げてデータを取得するという感じでできると思います。

投稿2019/02/03 05:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mirai0322

2019/02/03 06:03

カーソルはつかったことがないのでコードで頑張ってみたいと思います ありがとうございました。 質問の仕方が悪くてすいませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問