• ベストアンサー

複数のフィールドからデータをまとめるには?

mysql5.0.18です 日単位に買い物リストを作っています テーブル名「kaimono」 フィールドは下記の通り 「date」 「data1」 「data2」 「data3」 データはこんな感じです 2月1日 タバコ 書籍  ラーメン 2月2日 本   ジュース 2月3日 タバコ ラーメン さて、これを 2月1日 タバコ 2月1日 書籍 2月1日 ラーメン 2月2日 本 2月2日 ジュース 2月3日 タバコ 2月3日 ラーメン と表示させたいのですが、可能でしょうか? 余分なフィードを表示しても問題ありません ようするに、data1,2,3をばらけて表示させたいのです よろしくお願いします

  • MySQL
  • 回答数3
  • ありがとう数3

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

  • ベストアンサー
  • galoon
  • ベストアンサー率28% (38/133)
回答No.1

こんなんいかがでしょう? (select date,data1 from kaimono) union (select date,data2 from kaimono) union (select date,data3 from kaimono) order by date; 詳しくは、リファレンスのUNIONを見てください。

jojo12345
質問者

お礼

返信が遅くなり申し訳ございません 回答の通り、うまくいきました ありがとうございました

その他の回答 (2)

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

実行方法は既出のとおりMySQL5であれば UNIONでしょう 根本的にDBの構築を見直した方がよいでしょうね。 いちいちUNIONしないとコードが検索できないのは スピード面でも無駄が多いと思われます。

jojo12345
質問者

お礼

助言ありがとうございます よくよく考えてみます ありがとうございました

回答No.2

実行していないので、怪しいですが、、 UNION クエリでいけると思います。。 UNIONクエリの場合 select date,data1 as data from kaimono union all select date,data2 as data from kaimono union all select date,data3 as data from kaimono その後、日付順に並べるのであれば、これをサブクエリにして、order by を実行してください。 例) select date,data from (・・・・・) order by 1

jojo12345
質問者

お礼

返信が遅くなり申し訳ございません 回答の通り、うまくいきました ありがとうございました

関連するQ&A

  • MySQLの日付データについて

    PHPでMySQLから日付データを表示しようとしているのですが、日付フィールドの値をvarcharにしてしまいました。 このような状況下での質問なのですが、varcharフィールドに2006年1月1日と2006年2月1日と2006年11月1日がある場合、PHPで日付データを表示するとこのような順番で表示されてしまいます。 2006年1月1日 2006年11月1日 2006年2月1日 下記のようなカレンダー順の表示にするにはどのような方法があるでしょうか? 2006年1月1日 2006年2月1日 2006年11月1日 また、下記の質問と回答を拝見したのですが、日付データはタイムスタンプで処理するのが一般的なのでしょうか? http://oshiete1.goo.ne.jp/qa1396724.html その場合、フィールドタイプをDATEにしておいて、PHPからMySQLに書き込む際はどのような形式が正しいのでしょうか? 2006/1/1のまま書き込んでも自動的にタイムスタンプに変換してくれるのでしょうか。 最後に私のような初心者がMySQLを勉強する際にお勧めの書籍やウェブサイトなどありましたら是非教えて頂けると幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SQLを教えてください

    下記のような場合のSQLがわからなくて困っています ご回答よろしくお願いします 日単位に買い物リストを作っています 2月1日 タバコ 書籍  ラーメン 2月2日 本   ジュース 2月3日 タバコ ラーメン 2月4日 タバコ 条件1:商品は1万種類以上 条件2:1日の購入商品数は最大100 条件3:抽出条件も最大100 上記の場合でタバコとラーメンを買った日 (2月1日と2月3日)が知りたいのですが SQLが分かりません 思いついたのが | Field | Type | Key | +---------+------+------+ | date  | date | PRI | | syouhin| text |    | +---------+------+------+ このshouhinに商品名または商品IDを連続で書いて もってこれないかな?と思ったりしましたが むりそうですよね?・・・ 上記のテーブルで抽出結果を更に抽出・抽出・・・・ とすれば可能ですが、条件にも書いたとおり 抽出対象の商品が最大100になります このような条件で抽出(SQL発行数は少なくして)するにはどうすればいいのでしょうか? よろしくお願いします

    • ベストアンサー
    • MySQL
  • MySQLのdate型をphpで○年○月○日と表示したい

    MySQL5+PHP5の環境でMySQLのフィールドにdate型で2008-09-25のように本の発売日がデータが格納されています。 PHPで2008-09-25を2008年9月25日というように表示したいのですが、どのような関数を使えばいいのでしょうか。 やりたいことは、本の発売日をphpのフォームからMySQLに格納して、2008年9月25日のように自由に整形表示したいです。 また、月別のデータ表示や日付の計算なんかもしたいのですが、このような場合、MySQL側をdate型にしないで他の型にしたほうがいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • Access 数値フィールドのデータを日付としてまとめたい

    いつもお世話になっています。 Accessで3つのフィールドに2006、4、25 と年、月、日 として扱うデータが入っています。 業務上どうしても別々のフィールドに置いておいたほうがよいので、そうしたのですが。 その3つのデータを、1つのフィールドに日付としてまとめるやり方を教えてください。 よろしくお願いします。

  • グラフ作成でデータフィールドにだけ合計を表示させたい

    エクセルで年間の売上高をグラフにした時X軸の下にデータテーブルを表示させていますが、たとえば1月から12月までは個別に自動的にデータもグラフも表示されますよね。 そのデータフィールドの12月の隣に年間合計をデータフィールドにだけ表示させて、グラフには表示させない、そんなことができないでしょうか? (グラフは元のデータとは別に「新規のシート」で作っています。) 1月 2月 3月・・・11月 12月 年間合計 15  30  25・・・  45  20   420

  • Access 条件によってフィールドのデータを削除したい

    いつもお世話になっています。 Accessで書籍管理のデータベースを作っています。 「利用者名」「連絡先」「貸出日」等のフィールドがあります。  書籍が返却されたときに「利用者名」のデータを削除しますが、削除されたとき「Null」の時、そのレコードの「連絡先」と「貸出日」のデータを消去したいと思います。 どのように設定すればよいか教えてください。 また、貸しだし登録の時に、「利用者名」が入力されたのに、「連絡先」や「貸出日」を入力されていな場合の警告の出し方も教えてください。 よろしくお願いいたします。

  • dateのフィールドタイプについて

    date()関数を使ってmysqlに日付をいれています。 フィールドタイプはtimestamp(12)としてdate("YmdHi")にデータが入っています。 そのまま取り出すと「200602181316」となってしまって、それをphpの関数を使って 2006年2月18日13時16分としています。 phpでは文字数を数えて年、月、時間を間にいれていますがひょっとしてもっと簡単に表示する方法があるのでしょうか? すごく遠回りな事をしている気がしてなりません。 ご存知の方がいらしゃいましたら教えてください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • SELECT文で取り出したデータを文字列を別のtableのひとつのフィールドへ

    宜しくお願いいたします。 PHP5 Mysql5 で運用しています。 $sql = "SELECT * FROM member WHERE ****** $rst = mysql_query($sql, $con); で取り出して while($col = mysql_fetch_array($rst)) { print $col['mail']; } これで表示はさせられるのですが、 この出てきたデータを [ , ] で区切って全部一まとめにして。 次の画面で、別のテーブルの一つのフィールドに 全部入れたいのですが判りません。。 表示はさせられるのだから、それを一まとめにしては 出来るつもりでしたが。どうしても判りません。 どのようにしたらよろしいでしょうか? アドバイスなど、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • MySQL 複数フィールドで不一致の抽出

    ジャンル  id ジャンル名 日 数 id ----+---------------+--------------+---------+------- 001 ワンピース 20110518 10 a001 001 ワンピース 20110518 6 a002 002 アクセサリー 20110518 5 b002 仮に、このようなデータがあったとします。 数時間後には、↓のように変更がかかって送られてきます。 001 ワンピース 20110519 7 a001 001 ワンピース 20110518 6 a002 002 アクセサリー 20110519 9 b002 データ配布元の問題で、内容が更新された時点で、まだデータが確定していないものは、前日のデータが混ざって送られてきます。 この仕様を改良することは、残念ながら全く不可能です。 しかし、このデータをそのままテーブルに取り込んでしまうと、当然、2行目が重複してテーブルに収まってしまい、その後のデータ抽出に支障がでます。 例の場合でいえば、既に存在している2行目のデータを捨て、1行目と3行目のみを抽出する方法を探しています。 そこで、全部のデータを持つのをテーブル1とし、新しく着いたデータ(0519を含む方)をテーブル2に一時保管て、 SELECT テーブル2.ジャンルid, テーブル2.ジャンル名, テーブル2.日, テーブル2.数, テーブル2.ID FROM テーブル2 LEFT JOIN テーブル1 ON (テーブル2.ID = テーブル1.ID) AND (テーブル2.数 = テーブル1.数) AND (テーブル2.日 = テーブル1.日) AND (テーブル2.ジャンルid = テーブル1.ジャンルid) WHERE (((テーブル1.ジャンルid) Is Null)); と不一致SQLをAccessで行ったところ、1行目と3行目までが抽出できました。 ジャンルid、日、数、id が一致しないものを取りだすという不一致クエリの改造です。 ところが、同じSQLを、本番であるMySQLで行ったところ、データが抽出できす、反応が無くなってしまいます。 サンプルでは件数を絞りましたが、実際には1回分のデータが1万件近くあり、さらにメインテーブルは60万件ほどになるため、量が多すぎるためとも思いますが、4時間経ってもクエリの結果が返って来ないのは、MySQLとなにか合わないのではないかと思います。 MySQLで、上記と同じく、ジャンルid、日、数、id の全てが一致しないデータを抽出する事は可能でしょうか? ちなみに、MySQLテーブルでは、idの前にインクリメントのフィールドを置き、インデックスもインクリメントのフィールドで作成してあります。 よろしくお願いします。

  • データベースのフィールドのデータ型について

    くだらない質問で申し訳ありませんが宜しくお願いします。 下記のようなデータを格納するテーブルを構築しています。 ・ユーザーID ・名前 ・カタカナ ・パスワード ・年齢 ・郵便番号 ・住所1 ・住所2 ・住所3 ・電話番号 ・メールアドレス ・備考 ・削除フラグ ・登録者 ・登録日 ・更新者 ・更新日 上記の内容を下記のようなテーブルのフィールドのデータ型を考えました。 ・ユーザーIDのデータ型をVARCHAR(4) ・名前のデータ型をVARCHAR(32) ・カタカナのデータ型をVARCHAR(32) ・パスワードのデータ型をVARCHAR(255) ・年齢のデータ型をINTEGER ・郵便番号のデータ型をVARCHAR(8) ・住所1のデータ型をVARCHAR(255) ・住所2のデータ型をVARCHAR(255) ・住所3のデータ型をVARCHAR(255) ・電話番号のデータ型をVARCHAR(18) ・メールアドレスのデータ型をVARCHAR(255) ・備考のデータ型をTEXT ・削除フラグのデータ型をVARCHAR(1) ・登録者のデータ型をVARCHAR(4) ・登録日のデータ型をTIMESTAMP ・更新者のデータ型をVARCHAR(4) ・更新日のデータ型をTIMESTAMP そうしたら下記のような風にテーブルのフィールドのデータ型にしたら格納する文字列の桁エラーが起こらないからどうといわれました。 ・ユーザーIDのデータ型をVARCHAR(4) ・名前のデータ型をTEXT ・カタカナのデータ型をTEXT ・パスワードのデータ型をTEXT ・年齢のデータ型をTEXT ・郵便番号のデータ型をTEXT ・住所1のデータ型をTEXT ・住所2のデータ型をTEXT ・住所3のデータ型をTEXT ・電話番号のデータ型をTEXT ・メールアドレスのデータ型をTEXT ・備考のデータ型をTEXT ・削除フラグのデータ型をVARCHAR(1) ・登録者のデータ型をVARCHAR(4) ・登録日のデータ型をTIMESTAMP ・更新者のデータ型をVARCHAR(4) ・更新日のデータ型をTIMESTAMP ※現在、使用しているデータベースはPostgreSQLですが、Microsoft SQL ServerやOracleやMySQL等の他のデータベースでもいいものなのかもご教授いただけると助かります。 私の知識不足でどちらがいいのかがわからず投稿させてもらいました。 申し訳ありませんが皆さんのお知恵をお貸し下さい。 宜しくお願いします。