ACCESS2003の質問です。


クエリ1:

SELECT FLD1, FLD2, Left([FLD3],3) AS FLD4
FROM テーブル1;

クエリ2:

SELECT FLD1, FLD2, テーブル2.FLD4, テーブル2.FLD5
FROM クエリ1 INNER JOIN テーブル2 ON クエリ1.FLD4 = テーブル2.FLD4;

上の2つのクエリを、ひとつにまとめる方法は、あるでしょうか。

やりたいのは、テーブル1のFLD3の頭3桁と
テーブル2のFLD4の3桁を結合して
両テーブルのフィールドを表示する事です。

ひとつのクエリで処理したほうが
速いかと思い質問しました。
よろしくお願いします。

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2010/06/04 19:03:22
  • 終了:2010/06/11 19:05:02

回答(1件)

id:koriki-kozou No.1

koriki-kozou回答回数480ベストアンサー獲得回数792010/06/04 20:06:01

ポイント60pt

Accessらしさなら、下のような感じ

SELECT FLD1, FLD2, Left([FLD3],3) AS FLD4,
DLOOKUP("FLD5", "テーブル2", "FLD4 = '" & FLD4 & "'") AS FLD5
FROM テーブル1
;

サブクエリ使うなら、下のような感じ(上よりは少し早いはずだけど、データが少ないと変わらない)

SELECT テーブル1.FLD1, テーブル1.FLD2, Left(テーブル1.FLD3,3) AS FLD4, テーブル2.FLD5
FROM テーブル1
LEFT JOIN テーブル2 ON テーブル2.FLD4 = Left(テーブル1.FLD3,3)
;

Accessのクエリは他のデータベースのVIEWみたいなものだからクエリ2つでも、クエリ1つでも速度に関してはあまり変わらないかもしれない

id:rupopon

ありがとうございました。試させて頂きます。

2010/06/04 22:07:20
  • id:ugg5803
    アグ クラシック ショート:http://www.uggau.jp/c-181-ugg-classic-short-b0.html
    アグ ウルトラ トール:http://www.uggau.jp/c-182-ugg-ultra-tall-b0.html
    アグ ウルトラ ショート:http://www.uggau.jp/c-184-ugg-ultra-short-b0.html
  • id:koriki-kozou
    koriki-kozou 2010/06/04 22:28:01
    >サブクエリ使う

    「LEFT JOIN使う」との間違い
    サブクエリで作ろうとした名残。無理してサブクエリにしても、効率よくできそうにないので却下した。
  • id:rupopon
    了解しました。ありがとうございました。
  • id:koriki-kozou
    koriki-kozou 2010/06/06 16:30:55
    日を改めてみてみるとLEFT JOIN のSELECT句で無駄な計算をさせてた
      SELECT テーブル1.FLD1, テーブル1.FLD2, テーブル2.FLD4, テーブル2.FLD5
    でよかった ごめん訂正して
  • id:rupopon
    訂正ありがとうございました。

    検証してみたのですが、
    おっしゃる通り、クエリが2つでも1つでも
    さほど変わりませんでした。
    DLOOKUPは遅かったです。
    LEFT JOINが一番すっきりしているので
    使おうかと思います。
    ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません