- ベストアンサー
SQL文がうまく作れなくて困っています。
あるテーブルに、営業_id、業務_idがあります。 社員テーブルにある社員_idと一致する社員名を表示させたいのですがうまくいきません。 accessだと、社員テーブルを2つ表示させ、それぞれのテーブルの社員_idを営業_id、業務_idと結合させれば問題なく表示させることができます。 これと同じ事を、aspでやろうとした場合どのようにすればよいのでしょうか?
- searching
- お礼率94% (36/38)
- Microsoft ASP
- 回答数4
- ありがとう数15
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Accessは長い間、触ってませんが、 SELECT B.社員名, C.社員名 FROM (あるテーブル AS A LEFT JOIN 社員テーブル AS B ON A.社員ID = B.ID) LEFT JOIN 社員テーブル AS C ON A.業務ID = C.ID ではないですか?
その他の回答 (3)
- tamaCo
- ベストアンサー率66% (47/71)
こんにちは。 >しかし、私のやりたい内容が営業社員名、業務社員名の両方を表示させたいのですが、教えていただいた内容ではうまく表現できませんでした。 手厳しいようですが、あなたのお使いの環境およびテーブル構成など、まったく開示されない状況でこれ以上の回答を求める事はムリだと思います。 そもそも社員テーブルに社員名フィールドはあるのですか? SQL文が何をするものなのか、もう一度お勉強なさって下さい。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj04.htm ACCESSのクエリで上手く行っているのであれば、No.1の方の回答で十分なのではないでしょうか。 「初心者だから」とおっしゃいますが、初心者でもACCESSヘルプを見る事は出来ますよね?調べましょう。インターネットは何のためにありますか? 誰でも最初は初心者ですよ。 ご気分を害されたら申しわけありませんが、あなたの隣の席にいる訳ではありませんので、これ以上のアドバイスは無理です。ご了承ください。
- tamaCo
- ベストアンサー率66% (47/71)
こんにちは。 ASPは関係ないですね。SQL文作成スキルの問題です。 SELECT b.社員名 FROM あるテーブル a, 社員テーブル b WHERE a.営業_id = b.社員_id AND a.業務_id = b.社員_id ACCESSの機能は便利だけれど、内容を理解して使わないと後が大変…。 がんばってください。
お礼
tamaCo様 SQL文まで記述して頂きありがとうございます。 しかし、私のやりたい内容が営業社員名、業務社員名の両方を表示させたいのですが、教えていただいた内容ではうまく表現できませんでした。 ACCESS、ASP共に初心です。もう少しアドバイスをいただけないでしょうか?よろしくお願いします。
- snow765
- ベストアンサー率26% (8/30)
ACCESSでうまくいっているのであれば、 1)クエリをデザインビューで開く 2)メニューの[表示]-[SQLビュー]を選択し、SQLビューモードにする で、元々使用していたSQLを見ることができます。 (ACCESS2003の場合なので別バージョンでは多少操作が異なるかも。でもSQLビューモードはどのバージョンにもあるので探してみててください) SQLビューに表示されるSQLを使ってもうまくいかないようであれば、SQL文そのものではなく別の要因ということになるのでは?
お礼
snow765様 ご回答ありがとうございます。 ご指摘いただいた方法で再確認しました結果、一部記述を間違っていました。 間違いを訂正したのですが、表示がうまくできない状態です。 おっしゃられる通り、SQL以外の原因がありそうなので、現在確認中です。
関連するQ&A
- SQL文のエラー
SQL文でエラーが表示されます。どの部分を修正すればいいですか? SQL文が長いので文字列を結合する演算子「.」を使って複数行に分けています。 エラー内容:SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '= ? and product_id = product.id' at line 2 //商品番号だけでなく、商品名や価格も表示したいので商品情報を保持するproductテーブルと 結合する。 //全て取得するのでSELECTは* //favoriteテーブルにはcustomer_idとproduct_id //productテーブルにはid, name, price $sql = 'SELECT * FROM favorite, product' . 'WHERE customer_id = ? and product_id = product.id '; // ?に顧客番号を指定する。 // favoriteテーブルの商品番号(product_id列)と、productテーブルの商品番号(id列)が // 一致している行だけが必要なので、WHERE句に条件を追加する。
- 締切済み
- MySQL
- SQLで可能かどうかお教えください
お疲れ様です。毎回困った時にはこのコミュニティを参考にしているものです。下記のような事ができるかご存知であれば教えて頂けると助かります。 **質問** 以下のテーブルがあります ID || BOX_ORDER || INSIDE_ORDER|| DISP_NAME 001 || 1 || 1 || 表示名1-1-1 001 || 1 || 2 || 表示名1-1-2 001 || 2 || 1 || 表示名1-2-1 002 || 1 || 1 || 表示名2-1-1 003 || 3 || 1 || 表示名3 上記テーブルをSQLを使用し以下のように取得するのは可能でしょうか? (希望実行結果) ID || BOX_ORDER1 || BOX_ORDER2 ||BOX_ORDER3 001 || 表示名1-1-1 <br> ||表示名1-2-1|| || 表示名1-1-2 || || 002 || 表示名2-1-1 || || 003 || || ||表示名3 ポイント ・ID及びBOX_ORDERが一致するデータはIDの行のBOX_ORDER1~BOX_ORDER3の各列に表示名を格納。BOX_ORDERが同一のものが複数件ある場合は<br>(文字列)を結合して同列に格納する。 ・BOX_ORDER1~BOX_ORDER3は固定 煩雑に書いて分かりにくいかもわかりませんが、御助力頂けたら助かります。よろしくお願い致します。
- ベストアンサー
- Oracle
- SQL文を教えてください。
社員テーブルと障害テーブルA、Bがあります。 社員テーブル(社員ID、発見者名、・・・etc) 障害テーブルA(障害番号、発生日、・・・etc) 障害テーブルB(事象、ステータス、対応内容、・・・etc) 社員ID、障害番号、事象、ステータスのSELECT結果を 一つのcsvファイルとして取得するプログラムを作成したいのです。 「複数のテーブルから」「任意の」列を指定して、 検索結果を「csvに出力」する方法がどうしても分かりません。 どのようなSQLになるでしょうか? うまく伝わっているでしょうか? よろしくお願いします。
- 締切済み
- Oracle
- SQL文を教えてください。
社員テーブルと障害テーブルA、Bがあります。 社員テーブル(社員ID、発見者名、・・・etc) 障害テーブルA(障害番号、発生日、・・・etc) 障害テーブルB(事象、ステータス、対応内容、・・・etc) 社員ID、障害番号、事象、ステータスのSELECT結果を 一つのcsvファイルとして取得するプログラムを作成したいのです。 「複数のテーブルから」「任意の」列を指定して、 検索結果を「csvに出力」する方法がどうしても分かりません。 どのようなSQLになるでしょうか? うまく伝わっているでしょうか? よろしくお願いします。
- 締切済み
- Oracle
- ASP + SQLにて
お世話になっております。 このたびASPを使用し、SQL Serverへデータをいれ管理プログラムを作成しているのですが、一部データの取り出しがわからないのでご質問させていただきます。 SQL文を発行する際に、 strSQL = "select * from table1 left join table2 on table1.社員ID = table2.ID order by table1.ID desc" としております。 構造として table1にはID,日付,内容,社員IDがありまして table2にはID,社員名があります。 上記のSQL文を実行し、 <% response.write objRS("社員名") %> として社員名を出力しているのですが、 そのときtable1のIDを出力しようとして <% response.write objRS("ID") %> としたらtable2のIDが出力されてしまいました。 table1のIDを出力する方法はないのでしょうか? よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- こんなSQL文はありませんか?
環境:Access97 例えば以下のような社員名テーブルがあったします。 部署名|氏名 --------------- 経理部|田尾 --------------- 経理部|平野 --------------- 経理部|モッカ --------------- 営業 |谷沢 --------------- 総務部|大島 --------------- 総務部|上川 --------------- このテーブルを部署ごとにグループ分けして 以下のような形式で氏名を抽出したいのですが、 このようなことができるSQL文はありますでしょうか。 部署名|氏名1|氏名2|氏名3|・・|氏名n ---------------------------------------- 経理部|田尾 |平野 |モッカ ---------------------------------------- 営業 |谷沢 ---------------------------------------- 総務部|大島 |上川 宜しくお願いいたします。
- ベストアンサー
- その他(データベース)
- (初歩的なSQL文?)あるテーブルだけは行列を入れ替えたい
MySQL4.0.17 次の(1)(2)のようなマスターとテーブルを、社員IDをキーに結合し、 (3)のように1行=1社員のフォーマットで出力するSQL文を教えてください。 (3)のようにするには、(2)を(社員ID別に)行と列を入れ替えなければなりませんよね? SELECT 社員ID.社員マスター, 名前.社員マスター, 性別.社員マスター, 社員ID.出席テーブル ??ここに何か挿入??? FROM 社員マスター, 出席テーブル WHERE 社員ID.社員マスター = 社員ID.出席テーブル (1) 社員マスター ----------------- 社員ID 名前 性別 ----------------- 1 鈴木 1 2 佐藤 1 3 山本 2 ----------------- (2) 出席テーブル ---------------------- 社員ID 年月 出席日数 ---------------------- 1 200601 3 1 200602 4 1 200603 5 2 200601 10 2 200602 11 2 200603 12 3 200601 7 3 200602 8 3 200603 9 ---------------------- 出力したいフォーマット --------------------------------------------------------------- 名前ID 名前 性別 出席日数200601 出席日数200602 出席日数200603 --------------------------------------------------------------- 1 鈴木 1 3 4 5 2 佐藤 1 10 11 12 3 山本 2 7 8 9 --------------------------------------------------------------- よろしくお願い致します。
- ベストアンサー
- MySQL
- たすけて~!はやく~!SQL文がわからないの~!
どなたか教えて下さいませ。 VBでoracleからデータを取ってくるところで、select文の書き方が分かりません。社員名簿テーブルから社員No.と社員名と先輩No.と先輩名を取ってくる場合です。先輩名は社員名簿の”先輩”の社員No.と先輩No.を関連付け(=)し、”先輩の”社員名を取ってきたいのです。 例)社員No. 社員名 先輩No. 先輩名 3 山田太郎 1 山田ごん太 7 山田花子 3 山田太郎 つまり、山田太郎は山田花子の先輩であることがわかります。 この表を作るために同じテーブルで関連付けをしてデータを取得したいのです。SQL文でお願いします。 たすけて~!
- 締切済み
- Visual Basic
- sql文
現在試合結果のSQL文を作っています。 テーブルは下記内容になっており、今までは個々のテーブルに試合日程IDを渡して表示させていました。 今までは ("select from 試合日程テーブル") ("select from 試合結果テーブル where 試合日程ID = 試合日程id") ("select from 試合味方得点者テーブル where 試合日程ID = 試合日程id") ("select from 試合相手得点者テーブル where 試合日程ID = 試合日程id") 現在はもっと簡単にできるのではないかと思い作り直そうと思っています。 試合日程テーブル | id | 相手 | | 0001 | 相手A | | 0002 | 相手B | | 0003 | 相手C | 試合結果テーブル | id | 試合日程ID | 得点 | 失点 | | 1 | 0001 | 6 | 0 | | 2 | 0002 | 4 | 4 | | 3 | 0003 | 0 | 5 | 味方得点者 | id | 試合日程ID | 得点者 | | 1 | 0001 | Aさん | | 2 | 0001 | Aさん | | 3 | 0001 | Bさん | | 4 | 0001 | Cさん | | 5 | 0001 | Dさん | | 6 | 0001 | Dさん | | 7 | 0002 | Aさん | | 8 | 0002 | Bさん | | 9 | 0002 | Cさん | | 10 | 0002 | Dさん | 相手得点者 | id | 試合日程ID | 得点者 | 1 | 0002 | 相手Aさん | | 2 | 0002 | 相手Bさん | | 3 | 0002 | 相手Cさん | | 4 | 0002 | 相手Cさん | | 5 | 0003 | 相手Aさん | | 6 | 0003 | 相手Aさん | | 7 | 0003 | 相手Aさん | | 8 | 0003 | 相手Cさん | | 9 | 0003 | 相手Cさん | ここで各試合結果を出したときに相手得点者、味方得点者をidごとに出す方法を教えていただけないでしょうか? 試してみたところ ("select from 試合日程テーブル") ("select from 試合結果テーブル) ( left join 試合味方得点者テーブル on 試合結果テーブル.試合日程ID = 試合味方得点者テーブル.試合日程id") ( left join 試合相手得点者テーブル on 試合結果テーブル.試合日程ID = 試合相手得点者テーブル.試合日程id") (where 試合結果テーブル.試合日程ID = 試合日程id) で試してみましたがうまくきませんでした。 上記のテーブルの内容で1試合に対し、得点者がちゃんと表示されるようにしたいです。 例:試合日程IDが0001の場合は味方得点者が6人分表示され、00002の場合は味方得点者が4人分と相手得点者が4人分表示されるように。 わかりにくい説明ではあると思いますが、宜しくお願いいたします。 足りない部分を指摘いただけると幸いです。
- 締切済み
- PHP
- SQLの書き方
はじめまして SQL Serverを使用していますが、下記のSQLの書き方がわかりません。 申し訳けありませんが、わかる方がいらっしゃいましたら、どなたか教えて下さい。 ◆質問 テーブル1とテーブル2の下記のKEYで結合させて、取り出した結果でテーブル3を更新したいです。 テーブル2はデータが複数件一致してしまうため、無条件に先頭の1レコードだけを取り出したいです。 取得できたテーブル2のid_1とid_2とid_3をテーブル3に書き出したいです。 ○KEY テーブル1.test = テーブル2.test and テーブル1.test1 = テーブル2.test1 テーブル1.id_2 = テーブル3.id_1 and テーブル1.id_3 = テーブル3.id_2 ○テーブル1 id_1 id_2 id_3 test test1 bbb 000001 001 000001 100 bbb 000002 001 000002 100 ○テーブル2 id_1 id_2 id_3 test test1 aaa 1 99 000001 100 ← このレコードを取り出したい aaa 2 99 000001 100 aaa 3 99 000003 100 aaa 4 99 000004 110 ○テーブル3 id_1 id_2 id_3 000001 001 aaa-1-99 ←id_3にテーブル2で取得できたid1 + id2 + id3を書き出したい 000002 001 夜遅くにすみませんがお願いします。
- ベストアンサー
- SQL Server
お礼
tasokarewa様 回答ありがとうございます。 tasokarewa様の回答を参考にさせていただき無事解決いたしました。 ありがとうございました。