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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

Q&A

解決済

3回答

1708閲覧

C#でMySQLのSQL結果をMySQL上の変数に格納したい

退会済みユーザー

退会済みユーザー

総合スコア0

C#

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

0グッド

0クリップ

投稿2020/07/16 12:56

編集2020/07/16 14:07

前提・実現したいこと

MySQLで、SELECTの結果をMySQL上の変数に格納し、この変数を別のSQL文に埋め込んで処理をしたいと思っています。下の処理をするために、1の結果(DataTable)をMySQL上の変数に格納し、2でこの変数を別のクエリに埋め込みたいのですが、変数に格納したDataTableを別のクエリに埋め込むことはできるのでしょうか。

1、employeesテーブルのid3番を検索し、実行した結果のDataTableをMySQL上の変数に格納
2、1のテーブルをソートするため、1のテーブルが格納されたMySQL上の変数を取得

該当のソースコード

var query = "SET @empt = 'employees';"; //employeesテーブルを@emptに格納 query += "SET @table = CONCAT('SELECT id, name, job FROM ', @empt, ' WHERE id LIKE % 3 %);"; query += "PREPARE stmt FROM @table;";

補足情報(FW/ツールのバージョンなど)

VisualStudio2019、MySQL、ASP.NET

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2020/07/16 13:47 編集

ASP.NET のタグをつけてください。 > SELECTの結果をユーザー定義変数に格納し 意味が分かりません。あなたの言う「ユーザー定義変数」とはなんですか? 何をしたいのか、全体のシナリオ・ストーリーから始めてやりたいことを書いてください。
退会済みユーザー

退会済みユーザー

2020/07/16 13:19

コメントありがとうございます。タグは追加いたします。 1、employeesテーブルをid3番でLIKEを実行し、この結果のテーブルをMySQL上の変数に格納 2、変数に格納された1のテーブルをソートしてC#の変数で受け取る ということをしたいのですが、1の変数をどうやって2に渡したらよいのか分からず、質問させていただきました。
退会済みユーザー

退会済みユーザー

2020/07/16 13:43

MySQL上の変数というのがあなたの言う「ユーザー定義変数」なのですか? 全然分からないのですけど。自分が無知だからなのかもしれませんが、分からないので答えようがないです。
退会済みユーザー

退会済みユーザー

2020/07/16 13:44

もしくは、なのですが、クエリに、パラメータでC#の変数に格納されているテーブルを埋め込むことができればと思っています。テキストの値などはクエリに埋め込めるので、テーブルも埋め込むことができるのでしょうか。。
退会済みユーザー

退会済みユーザー

2020/07/16 13:46

ユーザー定義変数とはそういったものだと思っていました。経験が浅く、わたしが勘違いしていたところがあるかもしれません。
退会済みユーザー

退会済みユーザー

2020/07/16 13:54 編集

あなたの言う「ユーザー定義変数」とは何なのですか? 「LIKEを実行した結果のテーブル」のこと? それは何なのですか? DataTable のこと? そうだとすると、どうやってそれを「変数に格納」するのですか? もっと具体的に、ごくごく具体的に、ここに書いてあること以外は知り得ない第三者が読んで、誤解の余地なく分かるように書いてください。
退会済みユーザー

退会済みユーザー

2020/07/16 14:10

修正いたしました。わたしの言うユーザー定義変数は、「LIKEを実行した結果のテーブル」で、DataTableのことです。これを変数に格納できるのかがそもそも分かりませんでした。
退会済みユーザー

退会済みユーザー

2020/07/16 14:16

> (DataTable)をMySQL上の変数に格納し それはどうやってやるのですか? 見当が付きませんけど。具体的に、ごくごく具体的に、ここに書いてあること以外は知り得ない第三者が読んで、誤解の余地なく分かるように書いてください。
退会済みユーザー

退会済みユーザー

2020/07/16 23:08 編集

実現したい事を見る限り、変数に格納ではなくLOVE-KANONさんの言うようにサブクエリで実行すれば実現できそうではありますが、それでは解決しなさそうですか?あとは、SELECT結果を格納する一時テーブルを用意するという手もありますが。 何故質問のような事をしたいのか詳しく書けば、別の方法を提案してくれる人が居るかもしれません。
退会済みユーザー

退会済みユーザー

2020/07/17 03:49

変数に格納しなくても、とのことで再度調べまして、自己解決いたしました。 自分がやりたかったことをもっとしっかり言葉にできたらよかったのですがどうにも言葉にできていなかったようです。 お騒がせいたしました。ありがとうございました。
退会済みユーザー

退会済みユーザー

2020/07/17 04:03

一度、質問するときのヒント https://teratail.com/help/question-tips を読んでください。特に以下のところ: > 人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです。一見簡単なようですが、実はとても難しいことです。 言語化は、スレッドに書いてないことは知り得ない第三者が読んで分かるようにというのが大事です。今回、このスレッドの質問はその点が十分でなく、 > 何がわからないかわからない人から質問を受けても、答える側も困ってしまいます。 という状態です。今でも分かりません。 質問するときのヒントに書いてありますが、Teratail は「質問と回答を通してお互いに知識や情報を交換・共有する場所」ということですので、自己解決で自己満足しないで、どのように解決したのかの情報を共有できるよう配慮をお願いします。
guest

回答3

0

ベストアンサー

皆様、ご回答・コメントありがとうございました。
自己解決いたしました。
わたしが実現したかったこと、自己解決してからようやく言葉としてまとまったような気がします。tai大変失礼いたしました。
1、employeesテーブルのidを検索(LIKE)し、別テーブルとJOINする
2、JOINした1のテーブルをid,name,jobの順に昇順に並び替える

var query = "SELECT e.id, e.name, w.jobno FROM employees AS e " +
"INNER JOIN workLoca AS w ON e.job = w.jobno " +
"WHERE name LIKE CONCAT('%',@id,'%')" +
"ORDER BY e.id, e.name, e.job;";

投稿2020/07/17 04:08

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/07/17 04:24

そういうことを聞きたかったなら、 (1) 表題を「MySQL の SELECT クエリの書き方」にし、 (2) 本文には「employeesテーブル」と「workLoca テーブル」の構造を書いて、△△△という条件で JOIN し、抽出条件は○○○とし、□□□という条件で昇順に並べる SELECT クエリはどう書いたらいいか? ・・・という質問にしたらよかったのでは? 「SQL結果をMySQL上の変数に格納したい」とか「実行した結果のDataTableをMySQL上の変数に格納」とか訳の分からない、たぶん質問者さんも分かってないことを書くから混乱するのです。
退会済みユーザー

退会済みユーザー

2020/07/17 04:37

chiii様の最初の想定では、変数に入れたデータに対して操作を行う認識だったのだと思います。 上記のような方法も存在します。(クエリ自体は単純なCRUDのみで製造を行う場合、この方法を使用します。) ただSQLは結構幅が広く、複雑な条件やデータを加工して取得するのも可能です。 SQL側に処理を置くかPG側に処理を置くかは、プロジェクト全体の設計にもよるのですが、、、 何にしても解決できてよかったです。
guest

0

ASP.NET Web アプリということで、あるページで作成した DataTable を他のページでも使いたいということではなかろうかと想像してますが、そうであれば Session を使ってはいかがですか。

DataTableをMySQL上の変数に格納

「変数」というのが何だか分かりませんが、何にせよ、そう言うことはできません。

(シリアライズしてとか、Session データの保存先に MySQL を使いたいと言うことなら話は別ですが、そんなことは考えてないと想像)

投稿2020/07/16 22:02

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/07/17 03:49

自己解決いたしました。上手い説明ができず、申し訳ありませんでした。
退会済みユーザー

退会済みユーザー

2020/07/17 03:53

どのように解決したのかを回答欄に詳しく書いてこのスレッドはクローズしてください。 次回質問する機会がありましたら、 > 自分がやりたかったことをもっとしっかり言葉にできたらよかったのですがどうにも言葉にできていなかったようです。 ということをきちんとお願いします。
退会済みユーザー

退会済みユーザー

2020/07/17 04:03

一度、質問するときのヒント https://teratail.com/help/question-tips を読んでください。特に以下のところ: > 人に質問をするには、自分が何を尋ねたいかを知っている必要があります。これは、「自分が今『何がわからないのか』がわかっていて、言語化できている」ということです。一見簡単なようですが、実はとても難しいことです。 言語化は、スレッドに書いてないことは知り得ない第三者が読んで分かるようにというのが大事です。今回、このスレッドの質問はその点が十分でなく、 > 何がわからないかわからない人から質問を受けても、答える側も困ってしまいます。 という状態です。今でも分かりません。 質問するときのヒントに書いてありますが、Teratail は「質問と回答を通してお互いに知識や情報を交換・共有する場所」ということですので、自己解決で自己満足しないで、どのように解決したのかの情報を共有できるよう配慮をお願いします。
guest

0

asp.netは無知ですが、他の方法としていくつか

・MySQLストアド
・そもそもサブクエリ使えばいいのでは?(結果をソートしてという箇所がいまいちわかりませんでしたが)

あと最近同僚がasp.netの業務やってますが、多分クエリ結果を変数に格納するのも可能だと思いますよ。(すみません、やり方は分かりません。)

投稿2020/07/16 16:22

編集2020/07/16 16:25
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2020/07/16 22:11

> DataTableをMySQL上の変数に格納 ストアドとかで、上記をどうやって実現できますか? DataTable はサーバーのメモリにあるインスタンスですが。
退会済みユーザー

退会済みユーザー

2020/07/17 01:16

DataTableに格納したあとに行いたい処理の内容がよくわからなかったので、格納したものを登録などに使用する想定で回答致しました。 すみませんがご希望と異なるようでしたら、スルーしてください。
退会済みユーザー

退会済みユーザー

2020/07/17 03:52

自己解決いたしました。 処理の内容ですが、自分なりに細かく書いたつもりだったのですが分かりづらかったようです。申し訳ありませんでした。サブクエリというのは初めて耳にしました。今後の参考にさせていただきます。ご回答ありがとうございました。
退会済みユーザー

退会済みユーザー

2020/07/17 03:59

解決できたのならよかったです。 わかりづらかったについては、私の理解力不足だと思いますので、気にしないでください。 私の知見を広げるためにも、解決方法をお教えいただければ幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問