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

Accessのクエリについて教えてください。テーブル1、テーブル2があります。
テーブル1にはID、日付1(フィールド)があり、テーブル2にはID2、日付2、携帯があります。

選択クエリでID1とID2はリレーションを貼りました。
日付1、日付2の値がイコールのもの、かつ携帯フィールドがブランクでないものを
抽出したいです。ただし日付1、日付2では日付フォーマットが別々です。
日付1では、yyyymmdd、日付2ではyyyy/mm/ddです。これらを考慮してどのように
抽出条件を指定すればよいでしょうか?

●質問者: akaired
●カテゴリ:コンピュータ インターネット
✍キーワード:access DD MM いもの イコール
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● ふるるP
●35ポイント ベストアンサー

Select * From テーブル1 Inner Join テーブル2

On テーブル1.ID1 = テーブル2.ID2

AND テーブル1.日付1 = Format(テーブル2.日付2,"YYYYMMDD")

Where テーブル2.携帯 is not NULL and テーブル2.携帯<>""

これでいけると思いますが、このSQLではテーブル2にあってテーブル1にはないデータについては抽出されません。このデータを抽出するには

Select * From テーブル2 Left Join テーブル1

On テーブル2.ID2 = テーブル1.ID1

AND Format(テーブル2.日付2,"YYYYMMDD")=テーブル1.日付1

Where テーブル1.ID1 is NULL

になります。

◎質問者からの返答

SQL教えていただきありがとうございます。現在、デザインビューでクエリを作成するからクエリを作っています。format関数ですが、抽出条件の所に、=Format([日付1],'yyyymmdd')といった形で入力すればよいのでしょうか?これをやると日付1のデータが空になります。


2 ● kn1967
●35ポイント
SELECT T1.*, T2.*
FROM テーブル1 AS T1, テーブル2 AS T2
WHERE (T1.ID1 = T2.ID2)
 AND (T1.日付1 = Replace(T2.日付2, "/", ""))
 AND (trim(T2.携帯) <> "");

※日付1も日付2もテキスト型なのでFORMATは使えません。

(一度数値あるいは日付型に変換してからだから面倒)

※Accessのバージョンを聞き忘れましたが

2000ではReplace関数はクエリ内では使えませんので、

標準モジュールに自作関数を作って呼ぶという手になります。

※数字は全て半角で書いてありますので、実際のものにあわせてください。

※動作確認はしてません。あしからず。

◎質問者からの返答

ありがとうございます、できました!

関連質問


●質問をもっと探す●



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