• ベストアンサー

複数検索について

paz777の回答

  • paz777
  • ベストアンサー率47% (77/163)
回答No.1

こんにちは。 お使いの環境にはあまり詳しくはないのですが、こんなSQLではだめですか? ---------------------------------------------------- SELECT A.code_proj,A.projname,B.name,C.name,D.name,E.name FROM m_project A, m_staff B, m_staff C, m_staff D, m_staff E WHERE A.makestaff = B.code_staff AND A.repstaff = C.code_staff AND A.workstaff = D.code_staff AND A.approvestaff = E.code_staff; ---------------------------------------------------- 要はm_staffテーブルがあたかも複数あるように見せかければ良いような気がします。 (UNIONはσ(^^)もよく分かりません) ではでは・・・

関連するQ&A

  • JSPで<SELECT>の中にDBから持ってきたデータを反映させたい

    urizakaです。 現在、Jbuilder+SQL-Serverでプログラムを作っているのですが、そのなかで SELECTタグで選択できるデータはDBから持ってきたものとし、尚且つそのタグ 部分に表示される初期値がDBから持ってきたものとしたいのですが、これは どのようにすればよいのでしょうか? (DBデータ)  データベーステーブル名:m_Auth  フィールド名  code_auth name_auth 1 責任者           2 リーダー          3 一般メンバー  データベーステーブル名:m_staff  フィールド名  code_staff name code_auth 1 urizaka 1 2 fukutome 2 3 fujiwara 3 4 isezaki 3 (JSPソースコードよりSELECT部分のみ抜粋)   <SELECT name = "s_code_auth"> <% int i;  /** tantoushaallbeanはこのJSPで使うメソッドが入ったBeanファイルです**/ for( i = 0; i < tantoushaallbean.getcode_auth().size(); i++ ){ out.println("<option value=\"" + /** 下記はcode_authを全て持ってくるメソッドです**/ tantoushaallbean.getcode_auth().elementAt(i) + "\">" + /** 下記はname_authを全て持ってくるメソッドです**/ tantoushaallbean.getnameauth().elementAt(i) + "</option>" ); } %> </SELECT> 現在では、SELECTタグで選択できるデータはDBから持ってきたものが表示 されますが、初期状態はDB「m_staff」のcode_authがどの値であろうと、 code_authが1の責任者になっている状態です。  すみませんが、上記の件について方法をご存知の方がいらっしゃったら ぜひ宜しくお願いします。

    • ベストアンサー
    • Java
  • ORACLE 効率の良いDB設計について

    複合キーとはこういう時に使うのでしょうか? テーブルが2つあるとします。 テーブルAは、CODE テーブルBは、CODE1,CODE2,NAME とします。 テーブルAの"CODE"とテーブルBの"CODE1"+"CODE2"をキーに テーブルBの"NAME"を取得する場合。 たとえばテーブルAのCODEに"A1B1"という値が入っていて テーブルBのCODE1,CODE2の値にそれぞれ、"A1"、"B1"が入っている場合、テーブルBの主キーはCODE1とCODE2の二つにした方が効率がいいですか? select テーブルA.code,テーブルB.name from テーブルA,テーブルB where テーブルA.code = テーブルB.code1 || テーブルB.code2 ↑あっているかちょっと自信がないですが こういった処理をしたいと思っています。 よろしくお願い致します。

  • 複数のPKを持つテーブル同士の結合について

    以下のような2つのPKを持つテーブル同士で、お互いに存在しないPKのデータを抽出するときのSQLを教えて下さい。 以下のデータの場合、テーブルAではCODE_1がAAAAAのデータ、テーブルBではCODE_1がCCCCCのデータのことを指します。 [テーブルA] CODE_1 CODE_2 ----- --- AAAAA 123 BBBBB 123 [テーブルB] CODE_1 CODE_2 ----- --- BBBBB 123 CCCCC 123 PKがCODE_1だけの場合は、 select distinct テーブルA.CODE_1 from テーブルA,テーブルB where テーブルA.CODE_1 not in ( select テーブルA.CODE_1 from テーブルA,テーブルB where テーブルA.CODE_1 = テーブルB.CODE_1) で、AAAAAが抽出できるとこまでは分かったんですが、複数のPKになったらいきなり分からなくなってしまいました。 どうかよろしくお願いします。

  • 複数テーブルからselect

    sql初心者です。 複数テーブルからselectする書き方が解らず質問です。 ユーザーtable user_code | name | address ------------------------------- 1 | 山田 | 北海道 2 | 高橋 | 東京 3 | 鈴木 | 仙台 4 | 岡田 | 北海道 来店table raiten_code | user_code | raiten_date ------------------------------- 1 | 1 | 2011/05/23 2 | 3 | 2011/08/05 3 | 4 | 2011/08/05 4 | 2 | 2011/08/05 5 | 1 | 2011/10/09 6 | 1 | 2011/08/05 とテーブルがあったとして、 北海道に住むお客様 + 2011/08/05の日付指定で来店記録を拾いだしたいと思っています。 (5日に来店の北海道の方) SELECT * FROM ユーザーtable WHERE address='北海道' union SELECT * FROM 来店table WHERE visit_date ='2011/08/05'; unionにマージとあったので、多分違いそうだなと思いつつ、試してみましたが、うまくいかずにいます。 mysqlのリファレンスマニュアルなども色々見ているのですが、答えにたどり着けません。 なにかヒントのようなものでもかまいませんので、お助けいただけると助かります。

    • ベストアンサー
    • MySQL
  • UPDATE

    ORACLE9i テーブル名 TABLE1 フィールド名  CODE マスタ テーブル名 MST フィールド名 CODE2 フィールド(CODE)の値とマスタのコード(CODE2)の値が同じであれば、マスタのコード(CODE2)の値をフィールド(CODE)に入れるのと、マスタデータが無い場合はNULLをいれたいのですが、マスタに無い場合の処理がわからないので おしえてください。 UPDATE TABLE1 SET CODE = MST.CODE2 WHERE TABLE1.CODE = MST.CODE2

  • 【PHP】複数語検索について

    お世話になります。 PHPにて複数語検索を行いたいのですが、うまく検索できずに困っています。 テーブル名はinformation、 レコード名はnameとして、スペース区切りで検索します。 $st = $db->prepare("SELECT * FROM information"); $where = array(); if($arr['name']){ $name_ary = explode(" ", $name); $name_count = count($name_ary); $where = ""; for( $i = 0; $i < $name_count; $i++ ){ if( $i != 0 ){ $where = ($where . " or"); } $where = $where . " name LIKE '%{$name_ary[$i]}%'"; } } $query= sprintf("SELECT * FROM information WHERE $where"); $st = $db->prepare($query); どなたかご教授いただけないでしょうか? 他の質問など見て真似たり、下記サイトを参考にしたりしているのですが、 うまくいかず困っております。 http://blog.olivesystem.com/824.html 何卒宜しくお願い致します。

    • 締切済み
    • PHP
  • SELECTのスピード

    SELECTのスピードでどの方法が 検索スピードが速いのか教えてもらいたいのですが Aのテーブル DENNO CODE Bのテーブル CODE NAME Aのテーブルを主にAのCODEでBのテーブルを参照したい時 (1) SELECT A.DENNO,A.CODE, (SELECT B.NAME from B where A.CODE=B.CODE) AS NAME from A (2) SELECT A.DENNO,A.CODE,B.NAME FROM A LEFT JOIN B ON A.CODE=B.CODE (3) SELECT A.DENNO,A.CODE,B.NAME FROM A , B WHERE A.CODE=B.CODE(+)

  • SELECT分での結果の取り出し方

    以下の様なテーブルから SELECT分で条件をWHERE CODE = '0001' の様に指定して 求まった結果を1つの文字列にしたいのですが 良い方法がありましたら、教えて下さい。 SELECT * from testtbl; CODE NAME ------------------------------- 0001 AAAA 0001 BBBB 0002 CCCC 0003 DDDD この例だと、 SELECT NAME FROM testtbl WHERE CODE = '0001'の様な形で NAMEの部分の結果として,'AAAA,BBBB'の文字列を取得したいです。 ファンクションとかで実現できるでしょうか?

  • SQL文の実行速度について

    こんにちは。SQLを勉強しています。 質問をさせてください。 Oracleテーブル(test_table:レコード数はかなりあると考えて構いません) にnumber(int),value(varchar), code(varchar)の3つのフィールドが存在 するとします。 今、codeを指定してvalueを取得したいと考えています。 (1)---------------------------- select value from test_table where code='001'; select value from test_table where code='002'; select value from test_table where code='003'; (2)---------------------------- select code, value from test_table where code='001' or code='002' or code='003' (1)と(2)ではどちらが実行速度が速いのでしょうか? 実際に実行すればわかることですが、そういった環境が ないので、確認できません。宜しくお願い致します。

  • 複数テーブルからのデータ取得方法

    SQL初心者ですが、教えてください。 (oracle10g を使用します) 下記の様なテーブルがあります。 テーブル名  カラム名 MEIBO    NAME, TYPE, HOME_CODE, OFFICE_CODE HOME     HOME_CODE, HOME_ADR, HOME_TEL OFFICE    OFFICE_CODE, OFFICE_ADR, OFFICE_TEL MEIBOテーブルのTYPEが1の場合、HOME_CODEをキーとして、HOMEテーブルより HOME_ADRとHOME_TELを取得、 MEIBOテーブルのTYPEが2の場合、OFFICE_CODEをキーとして、OFFICEテーブルよりOFFICE_CODE,OFFICE_ADR,OFFICE_TELを取得し、 下記のイメージのように出力をしたいです。 NAME TYPE   ADR    TEL -------------------------------------- 山田  1    東京都… 03-XXXX-XXXX 鈴木  2    神奈川県 045-XXX-XXXX 以上です。 ご存知の方いらっしゃいましたら よろしくお願い致します。