複数のidの、すべての最新値を求めたい
- 複数のidの、すべての最新値を求める方法を解説します。
- DBに登録されているデータから、各IDの最新日のcostを抽出する方法を詳しく説明します。
- UNIX TIMEを使用して、最新のcostを取得する手順について解説します。
- ベストアンサー
複数のidの、すべての最新値を求めたい
以下のようにDBに登録されています。 id date cost 129 1404313200 6000 76 1404313200 5000 129 1404226800 4000 54 1404226800 75000 129 1404226800 55000 日付はUNIX TIMEです。 各IDの、最新日のcostを抽出したいのですが、どのようにすればいいでしょうか。 上記だと 76 1404313200 5000 54 14042268007 5000 129 1404313200 6000 が抽出される方法を知りたいです。 (ID129のdateが1404313200で一番大きい=最新) よろしくお願い致します。
- umioyo
- お礼率78% (172/220)
- MySQL
- 回答数1
- ありがとう数5
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
実用にはidとdateの組み合わせがユニークであるという条件が必要ですね 処理的にはこう select * from tbl where (id,date) in (select id,max(date) from tbl group by id);
関連するQ&A
- 同じ日付で複数数値がある場合の最大値取得
以下のような形でDBに登録されています。 id date cost 129 1404313200 6000 76 1404313200 5000 129 1404226800 4000 54 1404226800 75000 129 1404313200 55000 id 129のものをすべて抽出したいのですが、もしdateが同じだった場合は、同じdateの中でのcostの最大値の行だけ抽出したいです。 このようなことは可能でしょうか。 上記の例でいうと、 129 1404226800 4000 129 1404313200 55000 が取得できればOKです。 あまりmySQLは詳しくないのでselect文でそのまま頂けると嬉しいです。 よろしくお願い致します。
- ベストアンサー
- MySQL
- Access 最新から2件分の日付
色々と調べたのですが、データが思い通りにならなく困っております。 テーブルの新しい日付から2件を表示したいのですがわかりません。 以下のようなデータがあるのですが ID 日付 1 2009/09/15 1 2009/09/09 1 2009/09/02 2 2009/09/15 2 2009/09/09 IDごとに最新の日付を2件分抽出したいのです。 ID 日付 1 2009/09/15 1 2009/09/09 2 2009/09/15 2 2009/09/09 クエリで、上記のように実現するには、どのようにすればよいのでしょうか? ご指南頂けると助かります。宜しくお願い致します。 環境 OS:XP Access Version:2002
- ベストアンサー
- オフィス系ソフト
- ACCESS 一番最新の日付の金額を出したいのですが・・
社員ID/交通費/登録日 のフィールドがあるテーブルがあります。 社員ID/交通費/登録日 0001 800 2007/4/1 0002 400 2007/4/2 ・ ・ 0001 700 2007/5/2 となった場合、0001の人は700円と言う風に登録日が最新のものを抽出したいのですが クエリをつくり登録日の集計を「最大」にしてみたら、日付は5/2がちゃんと出ますが、金額がその登録日以外の金額になるのです。 どうすればよいでしょうか? 分かる方教えて下さい。宜しくお願いします。
- ベストアンサー
- その他(データベース)
- 1:Nの結合結果として最新日付のもので1:1としたい。
Oracle9i Enterprise Edition R2の環境下で 以下のような2つのテーブルをを結合し [Output]の内容を抽出したいと思っております。 A table (顧客) **************************************** ID name A001 Robart A002 Todd B table (履歴) **************************************** ID name Date B001 A001 08/04/01 B002 A001 09/04/30 B003 A001 09/04/10 B004 A002 09/02/13 B005 A002 09/03/02 [Output] **************************************** A.name B.ID B.Date A001 B002 09/04/30 A002 B005 09/03/02 Aテーブル単位にBテーブルの最新日付の レコードを結合して抽出したいのですが、 MAX関数を使い試行錯誤しているのですが、 うまく行きません。どうか結合方法をご教示ください。 宜しくお願い致します。
- 締切済み
- Oracle
- 期間内のデータ抽出
テーブル名:HOGE ID DATE1 DATE2 FLG ------------------------------------------------------------ 001 2012-07-01 2012-07-15 0 002 2012-07-10 2012-07-20 0 003 2012-07-01 2012-08-01 0 004 2012-07-05 2012-07-19 1 005 2012-07-20 2012-07-31 0 006 2012-07-07 2012-07-15 0 で、本日の日付(2012年7月9日)がDATE1~DATE2に入る、かつFLGが0のレコードだけ抽出したいです。 上記の場合、 ID 001 003 006 この様に抽出したいのですが、宜しくお願い致します。
- 締切済み
- MySQL
- ZendFrameworkについて
ZendFrameworkについて PHP・ZendFramework初心者です。 今DBに登録した日付けを表示したいと思っています。DBはMysqlを使用しています。 DBに登録した内容は、"2010-08-20 16-00-00"です。 index.phtml----------------------------- : : <?php foreach($this->date as $time){ ?> <td><?php echo date('Y年n月j日'$time->times)?></td> <?php } ?> ---------------------------------------- 上記のように表示を指定してみると、 1970年1月1日になってしまいます。 原因がよくわかりません。 どなたかDBに登録した内容を上記のフォーマット通りに表示する方法を おしえてください。 よろしくおねがいします。
- ベストアンサー
- PHP
- 複数行の上位3位を1行に表示
複数行の上位3位を1行に表示する。 分かる方がいれば教えて下さい。 OS:Windows7 DB:PostgresSQL 8.3 <参照デーブル> 品番 ID 金額 日付 1; 3; 1000000; "2012-08-31" 1; 2; 970000; "2012-08-18" 1; 1; 970000; "2012-08-10" 1; 4; 940000; "2012-08-20" 2; 16; 300000; "2012-08-25" 2; 13; 300000; "2012-08-13" 2; 12; 250000; "2012-08-10" 2; 15; 250000; "2012-08-18" 2; 14; 200000; "2012-08-15" 2; 11; 200000; "2012-08-08" 上記の様なテーブルを、金額が高くかつ時間の速いもの順で、上位3位を1行に表示したいのですが、上手くいかずに困っています。 <抽出したい結果> 品番 ID1 金額1 ID2 金額2 ID3 金額3 1; 3; 1000000; 1; 970000; 2; 970000 2; 13; 300000; 16; 300000; 12; 250000 このように抽出しいたいのですが上手くいきません。 どなたか教えていただけいないでしょうか。 よろしくお願いします。
- ベストアンサー
- PostgreSQL
- SELECT文で抽出時に複数カラムのソート方法についてご質問します。
SELECT文で抽出時に複数カラムのソート方法についてご質問します。 開発環境は以下になります。 ・PHP Version 5.2.11 ・MySQL (5.0) そこでやりたいことです。 レストランの開店時間が、バラバラに入力されるとして 以下のデータがDBに格納されています。 TABLE `reserve` ID,NAME,DATE1,FLAG1,OPEN1,DATE2,FLAG2,OPEN2,DATE3,FLAG3,OPEN3 1,A店,2010-07-05,0,10:00,2010-07-06,1,12:00,2010-07-07,1,10:00 2,B店,2010-07-06,1,13:00,2010-07-07,1,13:00,2010-07-08,1,13:00 3,C店,2010-07-06,0,11:00,2010-07-07,0,11:00,2010-07-08,1,16:00 4,D店,2010-07-04,1,10:00,2010-07-05,0,10:00,2010-07-06,1,10:00 5,E店,2010-07-06,0,13:00,2010-07-07,1,11:00,2010-07-08,0,13:00 5,F店,2010-07-07,1,10:00,2010-07-08,0,10:00,2010-07-09,1,10:00 ・ ・ ・ 種別は ID:主キー NAME:VARCHAR DATE1~3:DATE FLAG1~3:INT OPEN1~3:TIME ※FLAG1~3は、0=店休日、1=営業日です。 ここから毎日の開店状態を、早い開店から順番に表示したいのです。 7月7日の開店状態を表示する場合の結果は 2010年07月07日 A店:10:00開店 F店:10:00開店 E店:11:00開店 B店:13:00開店 ・ ・ ・ このように、開店時間が早い順からソートして出力となります。 そこで以下のセレクト文で呼び出してみると抽出はうまくいきました。 SELECT * FROM `reserve` WHERE `DATE1` = '2010-07-07' AND `FLAG1` =1 OR `DATE2` = '2010-07-07' AND `FLAG2` =1 OR `DATE3` = '2010-07-07' AND `FLAG3` =1 しかし、ソートがうまくいきません。 ORDER BY `TIME1` , `TIME2` , `TIME3` ASC ORDER BY `TIME1` ASC , `TIME2` ASC , `TIME3` ASC ORDER BY `TIME1` `TIME2` `TIME3` ASC そこで、TIME1~TIME3をまとめてインデックスにしてみました。 でもうまくいかないです。 色々と試してみましたがうまくいきません。 根本的に間違えているのでしょうか? データを取り出してから、PHPでソートをかける方が良いのでしょうか? PHPでソートをするには、DBから取り出したデータを、連想配列に変換して ソートしてとなると思いますが。 抽出したデータを表示後、さらに店名でソートして再表示したりという ことを考えているので、出来ればSELECT文で実現したいと思い、 質問させていただきました。 ご教授いただければ幸いです。 何卒よろしくお願い致します。
- ベストアンサー
- MySQL
- 抽出後に最新10件出力
検査日 ID データ1 データ2・・・ 8/19 1 ○ △ 8/19 2 △ ○ 9/10 4 ● ▽ 9/10 5 ● ▽ 9/23 3 ○ ▽ 9/23 1 □ ● 上記のようなデータベースがあります。(Excel) IDで抽出して、検査日最新10件のデータを別のシートに出力したいのですが、どうしたらできるでしょうか。 関数でもマクロでも結構ですので、ご存じの方いらっしゃったら教えて下さい。
- 締切済み
- その他(データベース)
- SELECT文での抽出条件
以下のような処理を行いたいと思いますが SQL文の作成方法を御教授下さい。 【時間DB】 YEARMONDAY,HOUR,FLG, DATA ----------------------------- 20050528 1 1 10 20050528 2 1 20 20050528 3 1 30 20050528 4 1 40 . . . 20050528 22 1 40 20050528 23 1 50 20050528 24 1 60 【日DB】 YEARMONDAY,FLG, DATA ----------------------------- 20050528 1 250 処理内容:指定された日付で日DBの作成を行う。 抽出条件:フラグが全て等しい場合はその値を取得 :フラグが一致しない場合は0を取得 上記の場合,SQL文で抽出可能でしょうか? 以上,よろしくお願い致します。
- ベストアンサー
- Oracle
お礼
ありがとうございます。 現状はユニークでない場合もありえるので、ユニークになるように調整してから試したいと思います。