- 締切済み
MysqlでSUMをつかうとおもうのですが、、、。
PHPとMySQLを使ってやっています。 以下のように予約テーブルとエージェントテーブルがあります。 予約テーブル 予約ID 名前 電話番号 エージェント 人数 11 鈴木 ******** 11 1 12 佐藤 ******** 12 5 13 田中 ******** 12 2 14 木村 ******** 13 3 15 伊藤 ******** 14 4 16 山田 ******** 11 8 エージェントテーブル エージェントID エージェント名 11 JTB 12 HIS 13 KNT 14 HNK 15 KKK こちらのデータから以下のような検索結果を得たいのですが、 どうすれば宜しいでしょうか? 表示結果 JTB HIS KNT HNK KKK 9 7 3 4 0 宜しくお願いします。
- taro0714
- お礼率53% (25/47)
- MySQL
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
ピボッドテーブルをつかってみるとよいでしょう create table ピボッドテーブル( ピボッドID int,JTB INT,HIS INT, KNT INT ,HNK INT,KKK INT); insert into ピボッドテーブル (id,JTB)values(11,1); insert into ピボッドテーブル (id,HIS)values(12,1); insert into ピボッドテーブル (id,KNT)values(13,1); insert into ピボッドテーブル (id,HNK)values(14,1); insert into ピボッドテーブル (id,KKK)values(15,1); 結果: SELECT SUM(JTB*人数) AS JTB ,SUM(HIS*人数) AS HIS ,SUM(KNT*人数) AS KNT ,SUM(HNK*人数) AS HNK ,SUM(KKK*人数) AS KKK FROM 予約テーブル INNER JOIN ピボッドテーブル ON エージェント = ピボッドID
関連するQ&A
- MYSQL PERL からの抽出について
こんにちは。 宜しく御願いたします。 携帯サイトのMYSQLデータベースから抽出を行っておりますが出来ない部分があります。 テーブルにあるそのままのものを抽出する事は出来たのですが、関数と言いますか定義と言いますか、queryを使いテーブルの中にあるものから ~の~の~の合計を取得の様な定義づけが分かりません。 例えば、木村と言う方が田中と言う方を紹介し、田中が佐藤を紹介し、それぞれの紹介人数の合計もさらに抽出といった感じです。 結果 木村は田中を紹介しました 田中は佐藤を紹介しました 佐藤は○○と○○を紹介しました 問題は、木村が田中を紹介した「定義づけ」です。 例えば固体識別より、queryで検索をかけてするのか、メールアドレスにより選別するのかなどで変わると思われます。 一番より方法は御座いませんか?
- 締切済み
- MySQL
- レコードを移動するには?
ID 名前 1 佐藤 2 伊藤 3 田中 4 鈴木 テーブルにはこのような情報が入っていて,IDはオートナンバー型で、 ID順にデータを読み込んだりしています。 この時、4レコードの鈴木を1と2レコードの間に切り取り→挿入することはできないのでしょうか? エクセルと違い、アクセスの場合は、右クリック→切り取りをすると、レコードが削除されるようです。 ID 名前 1 佐藤 2 鈴木 3 伊藤 4 田中 このようにしたい場合は、手作業で行うしかないですか?
- ベストアンサー
- その他MS Office製品
- 2つのテーブルで一致しているものを抽出する。SQL文で作成。
OS:WindowsXP SQLServer2000 <質問> SQL文が浮かばなくて困っています。 どなかたお力を貸していただけないでしょうか。 以下、やりたいことです。 【条件】 1 AテーブルとBテーブルで郵便番号が一致しているものを抽出 2 AテーブルとBテーブルに「番号」列を追加し、初期値を「0」とする 3 1の抽出後、同じ郵便番号がBテーブルに複数あった場合、 2で追加した「番号」列を0→”抽出した行分の数字”にする。 一応、【条件】1の箇所(下記)は浮かんだのですが、 2と3が分かりません。 select Aテーブル.*,Bテーブル.* from Aテーブル,Bテーブル left outer join Aテーブル on Aテーブル.郵便番号 = Bテーブル.郵便番号 WHERE ??? ●Aテーブル ID | 名前 | 郵便番号 | 番号 ----------------------------------------------------------------- 01 | 小林 | 101-1000 | 0 02 | 鈴木 | 102-1000 | 0 03 | 田中 | 103-1000 | 0 04 | 町田 | 104-1000 | 0 05 | 木村 | 105-1000 | 0 06 | 中田 | 106-1000 | 0 ●Bテーブル ID | 分類 | 郵便番号 | 番号 --------------------------------------------------------------------- 01 | AAA | 101-5555 | 0 03 | CCC | 103-1000 | 0 04 | DDD | 104-1000 | 0 05 | EEE | 105-1000 | 0 06 | FFF | 105-1000 | 0 07 | GGG | 106-1000 | 0 08 | HHH | 106-1000 | 0 09 | KKK | 106-1000 | 0 ↓出したい結果↓ ID | 名前 | 郵便番号 | 分類 | 番号 ------------------------------------------------------------------------------- 03 | 田中 | 103-1000 | CCC | 0 04 | 町田 | 104-1000 | DDD | 0 05 | 木村 | 105-1000 | EEE | 2 05 | 木村 | 105-1000 | FFF | 2 06 | 中田 | 106-1000 | GGG | 3 06 | 中田 | 106-1000 | HHH | 3 06 | 中田 | 106-1000 | KKK | 3 以上になります。 どうぞよろしくお願い致します。
- ベストアンサー
- SQL Server
- 副問い合わせ
今はこのようなSQL文を書きたいですが・・ table1 user_id | time 1 | 122120 2 | 100530 table2 user_id | name 1 | 佐藤 2 | 田中 SQL文 結果はこう user_id|name| time 001 |佐藤| 122120 002 |田中| 100530 に出力したいけど、初心者なので、方法が良くわかりません。 ご教授ください。
- 締切済み
- SQL Server
- アクセスレポートのNextRecordについて
アクセス2000を使用しています。 レポートのNexrRecordプロパティの中身が分からないので 教えてください。 以下のテーブルを元にレポートを作成しました。 ****************************** テーブル名:Tテスト ID 名前 (←フィールド名) ------------------------------ 1 田中 2 佐藤 3 鈴木 4 小林 5 大橋 ****************************** レポートの詳細セクションで2件目の フォーマット時、NextRecordをfalse にしましたところ、以下のように出力 されました。 「出力結果」 1 田中 2 佐藤 3 鈴木 4 小林 5 大橋 つまり、テーブルの内容がそのまま出力されました。 素人考えでは、 1 田中 2 佐藤 2 佐藤 3 鈴木 4 小林 5 大橋 なるものとばかり思っておりました。 NextRecordがいつどのように働くのか詳しく教えて いただきたいと思うのですが、どうぞよろしくお願い いたします。 (レポートのセクションの実行順がよくわかりません)
- ベストアンサー
- オフィス系ソフト
- Mysqlで複数テーブルの参照
Mysqlで複数テーブルの参照 お世話になります。Mysqlについて質問させてください。 現在、それぞれnameとdateとflagの3フィールドをもつテーブルが、2つあります。 もともと別の用途で準備したものなのですが、 2つのテーブルのflagを参照して、1のものだけdate順に並べることが出来るでしょうか? ■テーブル1 ----------------------------- name | date |flag| ----------------------------- 田中 | 2010-06-01 | 1 ----------------------------- 山田 | 2010-09-01 | 1 ----------------------------- 田辺 | 2010-10-01 | 2 ----------------------------- 田所 | 2010-11-01 | 2 ----------------------------- ■テーブル2 ----------------------------- name | date |flag| ----------------------------- 加藤 | 2010-10-01 | 1 ----------------------------- 佐藤 | 2010-07-01 | 1 ----------------------------- 織田 | 2010-12-01 | 2 ----------------------------- 斎藤 | 2010-01-01 | 2 ----------------------------- ■求める結果 ----------------------------- name | date |flag| ----------------------------- 田中 | 2010-06-01 | 1 ----------------------------- 佐藤 | 2010-07-01 | 1 ----------------------------- 山田 | 2010-09-01 | 1 ----------------------------- 加藤 | 2010-10-01 | 1 ----------------------------- 具体的なSQL文でなくとも構いません。参考になるような情報、サイトをご存じでしたら、教えてください。 よろしくお願いします。
- ベストアンサー
- MySQL
- 副問い合わせの書き方について
以下のようにテーブルを作成され、データが 格納されています。 CREATE TABLE IDLIST( MAINID number(1), SUBID number(1), FLAG number(1), NAME varchar(10) ); MAINID SUBID FLAG NAME ---------- ---------- -- -------------------- 1 1 1 佐藤様 1 2 0 佐藤さん 1 3 0 佐藤 2 1 1 田中さん 2 2 0 田中 このデータにおいて、FLAGが1であるNAMEをその他の 同一IDにコピーしたいと考えています。 つまり、期待する実行結果は以下のようになります。 MAINID SUBID FLAG NAME ---------- ---------- -- -------------------- 1 1 1 佐藤様 1 2 0 佐藤様 1 3 0 佐藤様 2 1 1 田中さん 2 2 0 田中さん SQL文を以下のように考えてみましたが、 update IDLIST set NAME = ( select NAME from IDLIST where MAINID = ( select MAINID from IDLIST where FLAG = 1) AND FLG = 1 ); この場合はMAINIDが複数のとき、副問い合わせにて 結果が複数あるため、エラーが発生します。 複数返ってくる結果をどのように処理してあげれば よいか困っています。 是非とも1つのSQLで実現させたいと考えています ので、知恵をお貸し頂きたいと思います。 よろしくお願い致します。
- ベストアンサー
- Oracle
- SQL:重複を削除した場合の別テーブルの更新
下記のようなことを行いたいのですが、もう数十時間悩んでおり、このままだとクビになります。 以下のようなテーブルが2つあります ■テーブルA 顧客ID なまえ 内線 ―――――――― 001、 佐藤、 001 ※同じ(これだけ残す) 002、 鈴木、 002 003、 田中、 003 004、 佐藤、 001 ※同じ(削除) 005、 佐藤、 004 006、 鈴木、 005 007、 佐藤、 001 ※同じ(削除) ■テーブルB 伝票ID 顧客ID 購入物 001、 001、 ガム ※対応する顧客は残る 002、 003、 チョコレート 003、 004、 塩 ※対応する顧客が残らない 004、 006、 ガム 005、 002、 塩 006、 007、 塩 ※対応する顧客が残らない テーブルAの佐藤4人中3人は、名前も内線も同じなので 顧客IDは一番小さいものだけ残し、あとは同一とみなし重複行を削除します。 そうするとテーブルBの伝票IDの001、003、006の顧客IDは全部が佐藤だったのですが 重複を削除してしまったため、003と006に対応する顧客がテーブルAから消えてしまいます。 なので、テーブルAの重複を削除するときに、同時にテーブルBの顧客IDも 一緒に一番小さい顧客IDに更新したいのです。 どうか宜しくお願いいたします。
- ベストアンサー
- Oracle
- 表の取り出し方で困ってます
以下のような2つのテーブルがあるとして、 [表A:学生マスター] 学生ID 氏名 001 佐藤 002 斉藤 003 田中 [表B:試験結果] 学生ID 試験ID 得点 001 001 80 002 001 70 003 001 60 001 002 75 003 002 85 002 003 90 003 003 85 以下のような集計表を得たいのですが、一発で作成できる(しかも高速な)SQLが思いつきません。 試験結果テーブルに順位が入っていれば簡単なのですが。 どなたかご教示ください。 [集計表] 学生ID 試験1 順位 試験2 順位 試験3 順位 平均得点 001 80 1 75 2 欠席 77.5 002 70 2 欠席 90 1 80.0 003 60 3 85 1 85 2 76.7
- 締切済み
- PostgreSQL
- 何の為に「抽出条件」「または」が2段に分かれてる
何の為に「抽出条件」「または」が2段に分かれてるのですか? アクセスの使い方がよくわからないので質問します。 ----------------------- テーブル1 苗字(フィールド) 田中 佐藤 伊藤 ・ ・ ・ ----------------------- クエリ1で フィールド:苗字 テーブル:テーブル1 並べ替え: 表示: 抽出条件:"田中" または:"佐藤" ----------------------- と入力して保存しクエリを一回閉じて再度開くと ----------------------- 抽出条件:"田中" Or "佐藤" または:(空白) ----------------------- になってしまいます。 意味は同じだと思うのですが 見た目上、2段のまま保存されたいのですが 自動でorを使われ一段で表示されてしまうのでしょうか? だとしたら何の為に「抽出条件」「または」が2段に分かれてるのですか? わかりやすくするために画像を添付します。
- ベストアンサー
- オフィス系ソフト