みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

データベース上の全てのテーブルに対するクエリ

mySQLでデータベース内の全てのテーブルに対するクエリーに関して質問があります(mySQL 5.5)。

仮に 「ichinensei」というデータベースにテーブル「1_kumi」「2_kumi」「3_kumi」 .....と複数のテーブルがあるとします。
テーブルは全て同じデータ形式で仮に
name (char) | weight (int)
という名前と体重の情報が登録されているとします。

やりたいことは全てのテーブルに対しweightを検索キーとして該当するレコードのnameをとってくる、という操作です。

weight(体重)が41,42,43,50,51であるレコードの名前を列挙するためには
SELECT name FROM (全てのテーブル) WHERE weight IN (41,42,43,50,51)
上記のようなクエリ文が考えられますが(全てのテーブル)に対する検索を1文で済ます方法が分かりません。
実際の作業ではテーブル数が数十個なのでなるべくunionなどを使ってテーブルの数分クエリ文を書くというのは避けたいと考えています。

このような場合どのようなクエリ文が使えるのでしょうか?

投稿日時 - 2012-08-07 08:08:26

QNo.7631136

困ってます

質問者が選んだベストアンサー

>>簡単にでもどういうふうに書けるか例を示していただけるとありがたいのですが。。。

んー。
じゃあこのあたりで。。。?

http://www.dbonline.jp/mysql/view/
http://dev.mysql.com/doc/refman/5.1/ja/create-view.html

作成したビューの中で、unionですべてくっつけておいてやれば、
そのビューに対してselectかけるだけで、全テーブルに対してselectを行ったことと一緒。に出来るようになりますね。

あんまりにもややこしいビューを作ろうとすると制約に引っかかったりとかしますが、今回のような内容ならば問題ないでしょう。

投稿日時 - 2012-08-08 09:09:10

お礼

大変参考になりました。ありがとうございました。

投稿日時 - 2012-08-14 05:48:36

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>「ichinensei」というデータベースにテーブル「1_kumi」「2_kumi」「3_kumi」

ichinenseiというテーブルにkumiというカラムをつくって1,2,3といれる
ようなデータ管理をしないと効率的に処理はできないと思いますが・・・

>テーブルの数分クエリ文を書くというのは避けたい

これだけが目的なら、ビューをつかうとか

投稿日時 - 2012-08-07 10:56:11

お礼

確かにデータ管理の方法が効率的ではないですね。質問させていただいたような方法が可能であれば現状のデータベースで簡単に処理できると思っていたのですが。。。
ビューというのは恥ずかしながら知りませんでした。調べてみます。
ありがとうございました。

投稿日時 - 2012-08-08 02:50:45

ANo.1

こんちは。

>>(全てのテーブル)に対する検索を1文で済ます方法が分かりません。

無理じゃない?

ストアド(MySQLだと、JOB。でしたっけ?)で、DB内のテーブル情報取得して、
それ元にして、まわしてデータ拾ってくる。
ぐらいなら考えられますが。。。

一文はちょっと。。。


>>なるべくunionなどを使ってテーブルの数分クエリ文を書くというのは避けたいと考えています。

この条件。。。ってことは、テーブル数自体は頻繁に変更されるものではない。
と思いますが、どうでしょう?

それならば、ややこしい(であろう)クエリ文を叩きまくるよりは、ビューでも作ってunionでくっつけておいた方が分かりやすいんじゃないかなぁ。と。
実際のクエリ文叩くときは、ビュー参照するだけですし、一文。になりますし。
(以降はビューの構成更新するだけ。ですし。




後は。。。
自分も、他の方の意見を見てみたいと思います^^;

投稿日時 - 2012-08-07 09:26:37

補足

>この条件。。。ってことは、テーブル数自体は頻繁に変更されるものではない。
>と思いますが、どうでしょう?
はい。おっしゃるとおりテーブル数は普段変えません。

>それならば、ややこしい(であろう)クエリ文を叩きまくるより
>は、ビューでも作ってunionでくっつけておいた方が分かり
>やすいんじゃないかなぁ。と。
>実際のクエリ文叩くときは、ビュー参照するだけですし、
>一文。になりますし。
ビューというものをこれまで知らなかったので、調べてみようと思います。簡単にでもどういうふうに書けるか例を示していただけるとありがたいのですが。。。

投稿日時 - 2012-08-08 02:50:39

あなたにオススメの質問