人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

SQL(ORACLE)について

下記に、商品テーブルと時間テーブルという2つのテーブルがあります。

商品テーブルをもとに、ファイルを作成しているのですが、
件数が膨大なため差分更新を行いたいと思います。

前回実行した時間を時間テーブルに格納し、
その時間以降に更新された商品テーブルのデータだけを抽出したいのですが、
どのように記述すればいいのか教えてください。

商品テーブルの情報が変更された場合には、UPDATEの日時が更新されます。

?????????????????????????????????
商品テーブル
JAN,NAME,ZAIKO,UPDATE
12,SDカード,3,200809231612
15,MDカード,5,200808080820

時間テーブル
タスク,前回実行時間
UPDATEPRODUCT,200809221600
?????????????????????????????????

例のテーブルでは、
前回の実行時間の2008/09/22 16時00分以降の
2008/09/23 16時12分に更新された商品テーブルの1行目を
抽出したいと思っています。

12,SDカード,3,200809231612


●質問者: wakutan
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:00 23 JAN name Oracle
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●35ポイント

前回実行時間という項目名から判断したのは2パターン。

(1)時間テーブルには常に1レコードだけが存在すると仮定すると

SELECT 商品テーブル.*
FROM 商品テーブル
 CROSS JOIN 時間テーブル
WHERE 商品テーブル.UPDATE >= 時間テーブル.前回実行時間
;

(2)時間テーブルにはUPDATEPRODUCT以外に複数のレコードが存在すると仮定すると

SELECT 商品テーブル.*
FROM 商品テーブル
 CROSS JOIN 時間テーブル
WHERE 時間テーブル.タスク = 'UPDATEPRODUCT'
 AND 商品テーブル.UPDATE >= 時間テーブル.前回実行時間
;

更新タイミングの兼ね合いもあると思うので >= にしてありますが > で良いかもしれません。

URL必須ということで

http://jibun.atmarkit.co.jp/lskill01/rensai/bronzesql06/bronzesq...


2 ● hirotie
●35ポイント

select * from 商品テーブル t1

where

t1.UPDATE > (select max(t2.前回実行時間) from 時間テーブル t2)

http://q.hatena.ne.jp/answer

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ