• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CREATE VIEWのUNION)

CREATE VIEWとUNIONを使用して複数列を一括検索する方法

このQ&Aのポイント
  • MySQLサーバー(XAMPP1.7.7 )で、CREATE VIEWとUNIONを使用して、複数列を結合した文字列を作成し、一括検索する方法について教えてください。
  • 質問文章からB列からE列を結合した文字列を作成し、A列に表示させる方法を知りたいです。
  • CREATE VIEWとUNIONを使って、A列にB列からE列を結合した文字列を表示し、Likeで検索できる方法を教えてください。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

>A列に、B列~E列の結合した文字列を吐き出して、Likeで検索すれば一括検索が出来る。 もしどうしてもやりたいならそれぞれのデータ型を文字列に変換しつつ concatでつなげばいいでしょう。 create table tableA (No int,name varchar(30),birth date,address varchar(200)); insert into tableA values(1,'伊藤','1970-01-01','秋田'),(2,'山形','1950-01-01','宮城'),(3,'市川','1960-01-01','新潟'); select concat(cast(No as char ),char(0),name,char(0),date_format(birth,'%Y/%m/%d'),char(0),address) as colA from tableA; →数値であるNoはcharにキャスト、date型のbirthは日付フォーマットした文字列に、 セパレータにchar(0)をつかって文字のつなぎの誤作動を調整 問題点: ・型を変換してまで検索対象にするのは効率がよくない ・セパレータによってはつなぎの部分が誤作動する可能性がたかい ・そもそもインデックスが全く考慮されていない >解決方法 普通に一つ一つのカラムについてLIKEで検索し、それぞれをORでつなぎます。

ShiftTail
質問者

お礼

ご回答ありがとうございます。 concatで解決できますね。 問題点のご指摘もありがとうございます。 インデックスまで考慮してませんでした。 解決方法までいただきありがとうございます。 おっしゃられるとおり、Like + or すれば解決しますね・・・。 情報ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • セルをツリー式にたたむ方法

    A列に大分類名を入れ、B列に小項目を入れたシートで、必要のないB列の項目をたたんでおく事は出来るでしょうか。 例えば・・。  A列  B列 北海道 渡島 東北  青森 関東  東京 北陸  新潟  ・  ・  ・  ・ と閉じていて、クリックなどで例えば東北だけB列を開く  A列  B列 北海道 渡島 東北  青森      秋田      岩手      宮城      福島      山形 関東  東京 北陸  新潟  ・  ・ という感じです。 以前なにかで見た気がするんですが。

  • 同じテーブルからviewを作成しようとすると「ORA-00942: 表またはビューが存在しません。」というメッセージが出ます。

    viewを作成しようとしています。 asの後ろのselect文でひとつのテーブルを二度使って、 viewの列を二つ作りたいのですが、 「「ORA-00942: 表またはビューが存在しません。」」というメッセージが出てしまいます。 どういうことでしょうか。 具体的には下記のようなことです。 create or replace view tmp (a1,a2,b1,b2) as select abc.a1 as a1, abc.a2 as a2, abc.a1 as b1, abc.a2 as b2 from ABCtble abc よろしくお願いします。

  • ユニオンクエリについて

    お世話になります。 クエリAとクエリBがあり、ユニオンクエリにて両クエリを結合させたいと思っております。 しかし、クエリBにしかないフィールド(test)がある為、「列数が一致しません」となってしまいます。 このような場合、一般的にはどのようにして対処するのでしょうか。 恐らくクエリAにtestというフィールドを仮想的に?追加するのだと思いますが、やり方がわかりません。 ご教授の程、宜しくお願い致します。

  • 金額(運賃)を出したいのですが・・・。

    毎日100個口以上出荷しています。 出荷金額も都道府県によってまちまちなのですが、 一発で出すやり方を教えてください。 エクセルにてA列に住所(都道府県)B列にお客様名)C列に小口数、 と入っています。 そこで”群馬、埼玉、東京、栃木”は1小口¥500 ”山梨、神奈川、千葉、茨城”は1小口¥600 ”静岡、長野、福島、新潟”は1小口¥700 ”宮城、山形、愛知”は1小口¥800 ”秋田”は1小口¥900 とDの列に金額が出せるようにしたいのですが・・・。 また、宮城にて5小口でしたら¥4000と出力されるようにもしたいのですが。 不明な点はご指摘ください。 素人質問で申し訳ありませんが、宜しくお願いします。

  • エクセルの「countif」について、カウントする文字を列で参照する方法

    例えば、 A列 B列 C列 福島 青森 千葉 秋田 石川 山形 青森 岩手 東京 宮城 青森 福島 : :   のように、A列には件名がランダムで、B列にはカウントする県名が順に入っているとします。 C列にカウントした数を表示するのに、 =countif($A$1:$A$50,"青森") と順にC1から入れていきたいのですが、47都道府県あるので、いちいち青森、秋田と入れるのは面倒なので、B列をifの条件に参照する形にしたいのですが、いい方法ありませんか? それとも何か他にいい方法があるのでしょうか

  • エクセルの関数(SUMPRODUCT?)

    ご存知の方がいらっしゃいましたら教えていただけたら幸いです。  A列 B列  C列  D列… 1 ID 部名 課名 都道府県… 2 1  A   a   北海道 3 2  A   c   大阪 4 3  A   b   東京 5 4  A   a   東京 6 5  A   a   福島 [シート名:入力]   A列  B列  C列 D列  E列… 1 地域   a   b  c   合計(←上記シート「入力」の課名) 2 北海道 2(Q2) 0  0   2(Q3)   東北 3 東京  1(Q1) 1  0   2 4 関西  0    0  1   1 [シート名:合計] (Q1)=SUMPRODUCT((入力!$C$2:$C$6="a")*(入力!$D$2:$D$6="東京")) で、地名を1つにしている場合は問題なく反映されています。 (Q2)★ここが一番聞きたいところです★ =SUMPRODUCT((入力!$C$2:$C$6="a")*(入力!$D$2:$D$6="北海道")*(入力!$D$2:$D$6="青森")*(入力!$D$2:$D$6="岩手")*(入力!$D$2:$D$6="宮城")*(入力!$D$2:$D$6="秋田")*(入力!$D$2:$D$6="山形")*(入力!$D$2:$D$6="福島")) で、エラーがでてしまいます。(イヤミではないんですが…)東京など大きなところでは(1)の処理でよいのですが、例えばここだと北海道や青森、秋田…とあまりその都道府県だけでは数の少ないところは「地域」として「北海道・東北」とまとめたく、上の式では、 「aの課で、且つ北海道か、青森か、岩手か、宮城か、秋田か、山形か、福島であればカウントする」としたいのです。 ちなみに(2)の式を入力すると、エラーは出ないのですが該当するものがあるにも関わらずゼロ(2ではなく0)と表示されてしまいます。 (Q3)よって、本当であればここの関数も 「aの部で、且つaの課で、且つ北海道か、青森か、岩手か、宮城か、秋田か、山形か、福島であればカウントする」としたいところ、(2)でつまずいてしまっているため、E2のセルの表示「2」はそのシートのB2-D2のSUM関数で合計を出しているという状況です。 (3)は以上のような対処で問題はないかと思いますが、(2)の部分はどうしても表示されません。 前任者のデータを引き継ぐ形となり、去年とは少し違う形式になるに伴い出てきた問題です。できれば去年のものをできるだけ引き継ぎたいと考えているのですが…何か良い方法があれば教えて頂ければ幸いです。

  • ACCESSのモジュールでのUNION

    ACCESS超初心者です。 モジュールでテーブルAとBテーブルBを結合しテーブルCを作成したいのですが、 DoCmd.RunSQL " SELECT * FROM TABLE_A UNION SELECT * FROM TABLE_B INTO TABLE_C; " でRunSQL実行時のエラー(2342)となってしまいます。 きっと基本的なことだと思うのですが・・・ どうぞお教えください。

  • SQLで二つのデータベースをUNIONでつないだあとに異なる入力形式の

    SQLで二つのデータベースをUNIONでつないだあとに異なる入力形式のフィールドでソートをかけたいのですが。 AのデータベースではNOが文字列で"001","002","003"...で、 Bの方ではNOが文字列で" 01"," 02"," 03"...と左1ケタ目がブランクとなっています。 これを"001"," 01","002"," 02"...というふうに下2けたのみでソートをかけたいのですが、 普通にORDER BYするとBを読んだあとにAがきてしまいます。 SUBSTRINGはUNIONでは使えなかったのですが、何かよい方法教えていただけませんでしょうか?

  • 【SQL文】このような結合UNION?できますか?

    SQL文でテーブルを結合し、insertしたいと思っています。 例) テーブル名:tb1, カラム:A1,A2 テーブル名:tb2, カラム:B1(b1,b2,b3,,,,) テーブル名:tb3, カラム:C1(c1,c2,,,,,,) tb2とtb3を結合させてtb1へinsertしたいと思いますが、 tb2とtb3リレーションを組める要素がありませんし、データの型も違います。 |A1 | A2 __|____|_____ 1 |b1 |c1 _____________ 2 |b1 |c2 _____________ 3 |b2 |c1 _____________ 4 |b2 |c2 _____________ 上記のような結果を作ってtb1へINSERTしたいのですが、UNION結合を使えるのか どうかすらわかりません。ネットで調べたのですが、突破孔を見つけることができ ませんでした。 ちなみにACCESSで結合までの結果を得るのに、SELECT B1.tb2,C1.tb3 from tb2,tb3 という文で出せましたが,mySQLではダメでした。 どなたかご教授おねがいできますでしょうか?

    • ベストアンサー
    • MySQL
  • 「column "A" does not exist」というエラーが出て、ビューを作成することができません。

    「column "A" does not exist」というエラーが出て、ビューを作成することができません。 postgreSQL(8.2)&pgAdmin(1.6.3)で以下のようなビューを作成しようとしたところ、「column "A" does not exist」というエラーが出てしまい、作成することができません。 試しにMS ACCESSで全く同じSQL文を発行してみたのですが、ちゃんとクエリが作成でき、以下の図のように問い合わせ結果を閲覧することもできました。PostgreSQLでも作成できる方法があればご教示いただけないでしょうか。 CREATE VIEW v_test AS SELECT 1 AS A, A + 3 AS B; +----+ | A | B | +----+ | 1 | 4 | +----+ 上図のように1という数値を格納する列「A」と、その列の値に3を足した数値を格納する列「B」で構成されるビューを作成できればいいのですが、どうしてもできません(実際はもっと複雑な内容なのですが、要は、直前に定義した列(A)の値を参照する列(B)を作成することができないのです)。 そもそもPostgreSQLではできないものなのでしょうか。それとも初歩的な何かが抜けているのでしょうか。 該当するような参考文献が見つからないため質問させていただきました。 どうかご教示いただけないでしょうか。