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

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

新規登録して質問してみよう
ただいま回答率
85.49%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

LINQ

LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。

Q&A

解決済

3回答

1701閲覧

SQLをLINQのクエリ式に変更したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

LINQ

LINQとはLanguage INtegrated Queryの略で、「統合言語クエリ」という意味です。C#やVisual Basicといった言語のコード内に記述することができるクエリです。

0グッド

0クリップ

投稿2019/07/03 04:05

編集2019/07/03 04:40

下記のSQLをLINQのクエリ式にするにはどうすればよいでしょうか?

SQL

1SELECT 2 tableA.name, 3 tableA.type, 4 tableA.draw_color, 5 counts.num 6FROM table A 7LEFT JOIN 8 (SELECT tableB.id as id, COUNT(*) as num 9 FROM tableB 10 GROUP BY tableB.id) AS counts 11ON tableA.id = counts.id

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

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

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

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

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

x_x

2019/07/03 04:34

そもそも SQL が間違っているのでは? SELECT tableB.id ではなく、SELECT tableB.setting_label_id ではないですか?
退会済みユーザー

退会済みユーザー

2019/07/03 04:40

ありがとうございます。質問修正しました。
guest

回答3

0

ベストアンサー

このあたりは参考になりませんか?

左外部結合の実行
https://docs.microsoft.com/ja-jp/dotnet/csharp/linq/perform-left-outer-joins

投稿2019/07/03 05:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/07/03 06:18

ありがとうございます。 外部結合は理解しましたが、GROUP BYで作成したテーブルをどのようにjoinの個所に記載するのかがわからないです。
退会済みユーザー

退会済みユーザー

2019/07/03 07:10

ありがとうございます。 いただきましたリンクをもとに実装できました。
guest

0

下記のLINQによりSQLと同一の結果が得られることがわかりました。

C#

1var subQuery = 2 from b in tableB 3 group b by b.id into g 4 select new 5 { 6 id = g.Key, 7 num = g.Count(), 8 }; 9 10var query = 11 from a in tableA 12 join sub in subQuery on a.id equals sub.id into gj 13 from item in gj 14 select new 15 { 16 name = a.name, 17 type = a.type, 18 draw_color = a.draw_color, 19 num = item.num 20 };

投稿2019/07/03 07:20

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2019/07/03 07:50

自分の解決策を書きたい気持ちは分かりますが、それに導いた回答にベストアンサーをつけるべきでは? レスがつかないとか、付いても解決に結び付かなくて自己解決したということならともかく、今回はそうではないですよね。
退会済みユーザー

退会済みユーザー

2019/07/03 08:49

操作間違えたんです。ごめんなさい。
guest

0

LINQ to Entities ですかね?
あらかじめアソシエーションで子テーブルの関係を作っておいてください。

C#

1 var result = db.tableA 2 .Select(a => new 3 { 4 a.Name, 5 a,type, 6 a.draw_color, 7 num = a.tableB.Count(), 8 }).ToArray();

投稿2019/07/03 04:42

x_x

総合スコア13749

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

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

x_x

2019/07/03 04:43

なぜかコードの一部がコメントっぽい表示になっていますが、コメントではないです。
退会済みユーザー

退会済みユーザー

2019/07/03 04:52

ご回答ありがとうございます。 アソシエーションの個所はどのようなコードになるのでしょうか?
退会済みユーザー

退会済みユーザー

2019/07/03 05:19

ごめんなさい。LINQ to Objectです。
x_x

2019/07/03 05:21

SQL ですらないのですか? オブジェクトが何か不明なので答えられません。 質問に追記してください。
退会済みユーザー

退会済みユーザー

2019/07/03 05:47

何度もごめんなさい。 SQLです。
Zuishin

2019/07/03 06:19

なぞなぞですかね。
退会済みユーザー

退会済みユーザー

2019/07/03 06:28

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問