現在ASPとACCESSを使用して、開発を行っています。
ORACLEでの開発経験はあるのですが、SQLServerやACCESSでの経験がなく微妙にことなるSQLに困惑しています。

ORACLEではUPDATE時に他のテーブルからデータを参照して更新できると思いますがACCESSで同じようなことはできるのでしょうか?実行したいのはORACLEでいう、以下のようなSQLです。
SQLを2回に分けて実行すれば同じことはできるのですが・・・。

UPDATE TAB_A SET (A,B) = (SELECT A1,B1 FROM TAB_B WHERE C1='10')
WHERE C = '10';

宜しくお願いします。

A 回答 (1件)

したのSQLでどうでしょうか。



UPDATE TAB_A,TAB_B
SET TAB_A.A = TAB_B.A, TAB_A.B = TAB_B.B
WHERE TAB_A.C = TAB_B.C AND TAB_B.C='10'
    • good
    • 0
この回答へのお礼

無事更新できました。
テーブルのところに、更新しないテーブル名も書けばいいのですね。
でもORACLEに慣れているせいなのか、この書き方は自分にとってはちょっと見づらいですね。

ありがとうございました。

お礼日時:2001/11/16 16:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QACCESS2003のデータアクセスページの使い方について

イントラ内でACCESS2003のデータアクセスページを使いたい。

1.ACCESS2003のデータアクセスページを作成しました。
2.そのMDBファイルと、データアクセスページ(htmファイル)を、WINDOWS2000ServerのInetpub内のwwwrootフォルダの中へ入れました。
3.ここにはイントラ内のHPなどを置いています。(普通に見れています。)
4.クライアントから、データアクセスページのhtmファイルを見に行くと「データソースログオン」が立ち上がります。(パスワードを設定しています。)
5.パスワードを入れるとデータアクセスページ(htm)から、通常のアクセスのフォームのごとくデータ入力が出来る予定なのですが(泣)できません。(泣)

で、悩んでおります。

ACCESS2003のMDBファイルとデータアクセスページ(HTMファイル)をサーバーのwwwrootへ置いただけでは、データアクセスページを通してmdbファイルへの入出力は不可能なのでしょうか?

Aベストアンサー

MDBに接続されたAccessプロジェクトを開いている場合データアクセスページは自動的にそのデータベースに接続されてそのパスがデータアクセスページのConnectionString プロパティに設定されます。
ページを作成した後でデータベースを移動またはコピーした場合はConnectionString プロパティに設定されているパスを更新して新しい保管場所を設定する必要がありますがどうなっていますか?
そこを確認してみてください。

QORACLEでのSQLのWHERE句について

はじめまして。

ORACLEに限ったことではないかもしれませんが、
例えば次のようなWHERE句、

WHERE A=B
AND C<D
AND E<>F

この時、各比較項目の並びを変えることによってパフォーマンス
に違いが出ているような気がしているんですが、
この辺りの内容が書かれている記事等、知っていらっしゃる方
いませんでしょうか?
宜しくお願い致します。

Aベストアンサー

このあたりの処理は、DBサーバによって異なるようです。
Oracleなどでは、単純にSQL文の順序で実行するわけではなく、ルールに従って
最適な方法で実行するようになっています。
こちらを参考にしてください。
http://www.int21.co.jp/pcdn/oracle/article/optimizer.html

参考URL:http://www.int21.co.jp/pcdn/oracle/article/optimizer.html

Qホームページ移転に伴う.htaccessの使い方ですがアップロードして

ホームページ移転に伴う.htaccessの使い方ですがアップロードして削除できなくなる事ないですか??また、さくらサーバーは.htaccess使えますか??

Aベストアンサー

.htaccessだけではなく、
ファイルはパーミッションによっては一旦削除できなくなると思いますよ・・・
使えないのにアップすると削除出来ないとか。

>さくらサーバーは.htaccess使えますか??
使えます。
.htaccessを使えない有料サーバってあるのでしょうか?・・・

QAccess 実行時エラー'3075' 対処方法

VBAの設定されているAccessファイルを作成したのですが、実行時エラー'3075' クエリ式 「'Mid([W_作業用]![※関税CD],2,2'のこの関数は式では使用できません」というエラーが発生しました。

ただ、このエラーについては、発生するPCと発生しないPCと二分しています。
エラーが発生するPCについては、発生しないようにするにはどうすればよいのでしょうか?
PCの環境を変更する必要があるのか、あるいは、システムそのものを改修する必要がある(Mid関数を修正する必要がある?)のでしょうか?周りに相談できる人がおらずに困っています。。

ps)ツール→参照設定で参照可能なライブラリファイルは確認した所、設定内容に問題はありませんでした。何が問題でこうしたエラーが発生しているのでしょうか・・

Aベストアンサー

その関数をどこで使ってますか?
クエリのフィールドでは無理ですよ?
更新クエリの値ならいいですけど。
画像あります?

QAccessで作成したテーブルのOLEオブジェクトの使い方

Accessで作成したテーブルにデータ型(OLEオブジェクト型)で画像を取り込みできるようにしました。
取り込みした画像を開くためのフォームを作成して画像を開けるようにしました。
下記の内容です。

Private Sub Form_Open(Cancel As Integer)
Form.Caption = ProgName
End Sub

しかし「ビットマップ形式」ですと問題なく開くのですが、「JPG形式」ですと開けないのです。取り込みしたAccessテーブルのフィールドから直接だとひらけます。
Accessで作成したフォームから、「JPG形式」の画像を開くにはどうすればよろしいですか?
また、画像を1000件ほど取り込みすると大きいデータベースになってしまいます。Accessのデータベースのサイズは制限があるのかしら?
アドバイスいただけれは幸いです。

Aベストアンサー

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正しく表示されません
http://support.microsoft.com/kb/832508/ja

解決策としては JPEG を開ける OLE コンテナになるアプリケーションをインストールしておく。

Google「Access データベース サイズ 制限」で検索
http://www.google.com/search?hl=ja&num=50&q=Access+%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9+%E3%82%B5%E3%82%A4%E3%82%BA+%E5%88%B6%E9%99%90&lr=lang_ja

Access のバージョンは?
んで Web で検索する努力はしましょうよ。
丸 1日ぐらい検索しっぱなしで悩まないと。

Google「access ole jpeg」で検索
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=access+ole+jpeg&num=50

Access 2003 では以下のような制限があるようです。
■ Access 2003 で OLE オブジェクトとして JPEG および GIF 画像を取り扱う場合の注意事項
http://support.microsoft.com/kb/884484/ja

■ OLE オブジェクト型のフィールドに格納されているイメージが正...続きを読む

QAccessの「IIF」に相当するSQL関数(ADOでOracleに接続時)

Access2002からADO経由でOracleに接続し、データを取得しようと
思っています。
AccessのクエリやExcel関数では、「IIF」、「IF」で条件分岐が出
来ますが、SQLでこれに相当する関数はありますか?
具体的には、

  ・日付A が 2007/08/01 ~ 本日 の間なら、「手配数」フィー
ルドの数字を返す
  ・日付Aが それ以外の期間なら、0 を返す

というような事をしたいです。
DECODE関数がIF関数と似ているように思いますが、Between~And~
や、不等号での分岐が出来ないようなので困っています。
IIFやIF のように分岐条件を自由に設定できて、入れ子も出来るよ
うな関数があれば教えてください。
よろしくお願いいたします!

Aベストアンサー

#1回答者です。

CASE式は、Oracle8iでサポートされているようです。

>SELECT (case when [T$QTY] > 100 then [T$QTY] else 0 end as 数量) FROM T_Sample A

そうですね。
select case when 列名1>100 then 列名2 else 0 end as 名前 from 表名
といった指定が可能です。

()は、この場合、必要ありません。指定しても文法エラーにはならないでしょうけどね。

[]は、$という特殊記号を使っているから、指定しているのでしょうか?[]は、ACCESSやSQL Serverなど、マイクロソフトの独自仕様だと承知しています。Oracleや標準SQLの場合は、「"」で囲みます。

<CASE式のマニュアル記載>
http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_v1/server.102/B19201-01/expressions.html#2100

#1回答者です。

CASE式は、Oracle8iでサポートされているようです。

>SELECT (case when [T$QTY] > 100 then [T$QTY] else 0 end as 数量) FROM T_Sample A

そうですね。
select case when 列名1>100 then 列名2 else 0 end as 名前 from 表名
といった指定が可能です。

()は、この場合、必要ありません。指定しても文法エラーにはならないでしょうけどね。

[]は、$という特殊記号を使っているから、指定しているのでしょうか?[]は、ACCESSやSQL Serverなど、マイクロソフトの独自仕様だと承...続きを読む

QAccess2000でFTPの使い方について。

Access2000のフォームから、実行のボタンをクリックするとFTPサーバに接続→ファイル取得→Accessテーブルに取込→FTPサーバのファイル削除→FTPサーバの接続切断という処理をしたいのですがどのようにしたらよいかわかりません。説明不足だとは思いますが、アドバイスを宜しくお願い致します。

Aベストアンサー

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一覧(詳細)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
v = ftp.GetDir("bussys/winnt/winnt-public") ' ディレクトリ一覧(ファイル名のみ)
If IsArray(v) Then
For Each v2 In v
Debug.Print v2
Next
End If
rc = ftp.GetFile("bussys/winnt/winnt-public/*", "c:\temp") 'ファイル受信

end sub

実行には20秒ほどかかります。
実行前にはCドライブにtempというフォルダを作っておいてください。

ちなみに先ほどのFTPサンプルは、BASP21をインストール後、サンプルのコードを新規モジュールに貼り付けて(たとえば以下をまるごと)実行すればAccessでもそのまま動きます。

sub file_download()

Dim ftp As Object, rc As Long, v As Variant, v2 As Variant
Dim ctr As Long

Set ftp = CreateObject("basp21.FTP")
ftp.OpenLog "c:\temp\log.txt"
rc = ftp.Connect("ftp.microsoft.com", "anonymous", "")
If rc = 0 Then
v = ftp.GetDir("bussys/winnt/winnt-public", 2) ' ディレクトリ一...続きを読む

QAccessでOracleのテーブルをリンクし、Access側では読み取り専用にしたい

社内にOracleデータベースでのシステムが立ち上がっているのですが、管理帳票の出力用に、OracleのデータをAccessで読み込みたいと思っています。
テーブルのリンクそのものは知っており、成功しているのですが、Oracleデータベースのデータを壊さないようにするため、このリンクテーブルを読み取り専用にしたいと思っています。どのようにすれば良いでしょうか。

なお、Oracle側で読み取り専用ユーザを作成して、そのユーザでリンクすれば良いことは理解していますが、それは最後の手段にしたいと思っています。別の方法でうまくできないでしょうか。

Aベストアンサー

Accessからは、ODBCでOracleにリンク接続しているのでしょうか?
それであれば、ODBCの設定画面(コントロールパネル→管理ツール→データソース(ODBC))で、「読み取り専用接続」という設定がありますので、そこにチェックをすればOKだと思います。

QRuby on Rails 「attr_accessor」 の使い方に

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状態になってしまうことです。
「:if => 項目?」を書いてみると、「undefined method」のエラーがでてしまいます。

どなたか対応策の分かる方がおられましたらご教授いただけないでしょうか?

下記に実際の問題箇所のモデルクラスのソースを書いておきます。

 class User < ActiveRecord::Base

   attr_accessor :NEW_USER_PW ← 追加したアクセサ

   # 追加したアクセサに対するチェック
   validates_length_of :NEW_USER_PW, :minimum=>4, :message=>"は%d桁以上を設定してくださ            
    い。", :on => :update, :if => :NEW_USER_PW?

 end

上記のチェック内の「:if => :NEW_USER_PW?」で落ちてしまいます。
入力がないのにチェックに引っかかるとまずいので、入力がないときだけ上記チェックを行えれば良いのですが・・・。

どうぞ宜しくお願い致します。

Ruby on Rails 「attr_accessor」 の使い方について

こんにちは。

現在、Ruby on Railsで登録画面を作成しているのですが、attr_accessorで定義した項目に対して、validationのチェックを行うと、問題が起きてしまいました。

attr_accessorで定義した項目は、DB登録の対象ではないのですが、lengthのチェック等を行う必要があり、validates_length_of等を使って入力チェックを行っています。

問題になったのは、入力があったときだけチェックをかけたいのに、入力がなくてもチェックがかかってしまうという状...続きを読む

Aベストアンサー

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.size > 0
end

また、ifにはprocオブジェクトを渡すこともできますので、
:if => Proc.new{|u| u.NEW_USER_PW.size > 0}
と書いてもいいでしょう。


NEW_USER_PWというインスタンス変数はすべて大文字を使用されていますが、
見る人によっては定数と勘違いします。
変数であれば小文字表記を利用するほうが良いかもしれません。

attr_accessor :NEW_USER_PWを定義したからといって、
NEW_USER_PW?メソッドが定義されるわけではりません。
attr_accessorはゲッターとセッターメソッドを作るだけです。
それ以外の論理値を返すようなメソッドは自作しなければなりません。

NEW_USER_PW?メソッドを作成されていないのなら、「undefined method」が
出てしまうのは当然です。

質問にあるように、「入力があった場合のみ」とありますので、
NEW_USER_PW?メソッドを下記のように実装すればチェック可能です。

def NEW_USER_PW?
@NEW_USER_PW.s...続きを読む

QORACLEでwhere句の検索順序

Oracle9i windows2000です。

以下のようなテーブルがあります。
table_a
-----------------------
id   NUMBER(10,0) NOT NULL,
sort   NUMBER(10,0) NOT NULL,
name   VARCHAR(10),
text   VARCHAR(255)

この条件で、以下のふたつのSELECT文を発行した時、パフォーマンスが良いのはどちらですか?
Oracleでは後ろから検索されると聞いたことがあるのですが本当でしょうか?
※idにプライマリキー、
id,sortにインデックスが貼ってあります。

(1)SELECT text FROM table_a
WHERE id = 1
AND sort = 2
AND name = 'a'

(2)SELECT text FROM table_a
WHERE name = 'a'
AND sort = 2
AND id = 1

Aベストアンサー

こんにちわ。
#3 のmuyoshid です。

> 「オプティマイザを使用しているのであれば」
> ということは、必ずオプティマイザが使われるわけでは
> ないのでしょうか。
Oracle9i の場合、コストベース・オプティマイザと
ルールベース・オプティマイザの2種類のオプティマイザ
が実装されています。
簡単に説明すると、
ルールベース・オプティマイザ:
 検索に使用する索引の優先順位や、結合方法に優先順位
 が決められていて、優先順位の高いものから選択される
 ようになっています。
コストベース・オプティマイザ:
 テーブルをAnalyze して収集した統計情報に基いて
 アクセスパスが決定されます。
 Materialized View やFunction 索引等、
 コストベース・オプティマイザの使用が前提となっている
 機能もいくつかあります。

ユーザ登録 (無料) が必要ですが、OTN Japan でPDF 形式の
マニュアルを公開していますので、詳細はこちらで確認
されてみてはいかがでしょうか?
「Oracle9i パフォーマンスチューニング・ガイドおよびリファレンス」
に詳しく記載されています。

参考URL:http://otn.oracle.co.jp/

こんにちわ。
#3 のmuyoshid です。

> 「オプティマイザを使用しているのであれば」
> ということは、必ずオプティマイザが使われるわけでは
> ないのでしょうか。
Oracle9i の場合、コストベース・オプティマイザと
ルールベース・オプティマイザの2種類のオプティマイザ
が実装されています。
簡単に説明すると、
ルールベース・オプティマイザ:
 検索に使用する索引の優先順位や、結合方法に優先順位
 が決められていて、優先順位の高いものから選択される
 ようになっています。
コストベ...続きを読む


人気Q&Aランキング