普通のUPDATE文はUPDATEするテーブル名を一つ記入して
UPDATE テーブルA SET フィールドA = 値A WHERE テーブルA.フィールドB = 値B
みたいな感じですが、私のしたい事はと言うと
UPDATE テーブルA,テーブルB,テーブルC
SET A.フィールドA = 値A
WHERE テーブルA.フィールドA = テーブルB.フィールドB
AND テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E
という具合に複数のテーブルがUPDATEするテーブルA以外のところで、互いに条件で結ばれており、FROM句でUPDATEしないテーブル名まで宣言しないといけなくなっています。そもそもこういうFROM句を使うUPDATE文は実行可能かも不明です。どなたか解決策お願いいたします。ちなみに開発ソフトはVBAを使っています。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

SET句にもサブクエリを使えますよ。



UPDATE テーブルA
SET フィールドA = ( SELECT テーブルB.フィールドF
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )
WHERE フィールドA = ( SELECT テーブルB.フィールドB
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )

> VBAと言うと普通ACCESSですよね?
VBAからODBC経由でOracleやSQL Serverという例もあるので
一概にはAccessのみとはいえません。
    • good
    • 0
この回答へのお礼

SET句とWHERE句とサブクエリを別々に作るのはいいのですが、レコードが複数存在した時につじつま合うんでしょうか?
2つ目のレコードに3つ目の値を放り込んじゃったりとか?

お礼日時:2004/10/04 07:31

データベースは何を使っているんでしょうか?



ACCESS、ORACLE、SQLサーバーなどありますが…。

この回答への補足

ACCESSです。質問にも書いたとおりです。
VBAと言うと普通ACCESSですよね?

補足日時:2004/09/29 01:38
    • good
    • 0

UPDATE テーブルA


SET フィールドA = 値A
WHERE フィールドA = ( SELECT テーブルB.フィールドB
FROM テーブルB,テーブルC
WHERE テーブルB.フィールドB = テーブルC.フィールドC
AND テーブルB.フィールドD = 値D
AND テーブルC.フィールドE = 値E )

これでできます。

この回答への補足

ありがとうございます。
私もサブクエリを考えていたんですが、結合の入ったUPDATE文と全く同じ機能を果たすことができるんですか?
それとすいません。2行目の式を少し間違えていました。
SET テーブルA.フィールドA=テーブルB.フィールドF

でした。これならサブクエリを使うことはできないと思うのですが・・・どうでしょう?

補足日時:2004/09/28 07:37
    • good
    • 1

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

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

QDIYテーブルの折りたたみ脚について

天版を蝶番で付けて真ん中を繰り抜き、七輪テーブルを作成しました。
現状は、余っているキャンプ用テーブルの脚をガムテープで固定しています。
ユニフレームの焚き火テーブルと同じ高さの折りたたみ脚を付けたいと思ってますが良いアイデアもしくは脚の販売先はありますでしょうか?
焚き火テーブルの高さは37cm、七輪テーブルの天版の厚さは約1.5cmなので、最低でも35cmの脚が必要になるかと思います。30cmの脚は結構見かけるのですが・・・。

Aベストアンサー

市販品にこだわらず、木などで作れば高さ自由ですよ。

1)別板を2枚クロスさせて天板を置く
2)蝶番つけて折りたたみ足にする
3)ナット埋めてねじ込みにする
4)テーブルを箱型にして、七輪+火種のケースとしてもそのまま使う

↑これらは高さの微調整にはアジャスタフットなりが必要ですが、
こういうの↓はアジャスタ機能もってますね

5)パイプの入れ子構造にして、内パイプは外パイプとねじ止めする。
 または外側の先端に割りをいれておいてクランプやホースバンドなどで締めて内パイプを固定する
6)天板の下にハの字形に広がるように左右脚をつけて、間をロープでつないで開き具合を調節する


ま、私なら4か6にしますね。
6のみ、簡単に絵にしておきます。

Qアクセス2000で作成したデータベースにテーブルを追加したいのです 「Set tbl = catDB.Tables![会費管理2]」 

アクセスで作成したデータベースがあります。
簡単にテーブルを追加するプログラムを作成したいのですが可能かしら?
現在[会費管理2]というテーブルが無いので[会費管理2]と言うテーブルを追加して、そのテーブルに各フィールドを作成したいのです。
作成したSet tbl = catDB.Tables![会費管理2] に
'以下追加したいフィールド
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値1"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値2"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値3"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "日付"
.Type = adDate
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX.Column
With colAdo
.Name = "金額"
.Type = adCurrency
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = Nothing
Set tbl = Nothing
Set catDB = Nothing
cnn.Close
End Sub

アクセスで作成したデータベースがあります。
簡単にテーブルを追加するプログラムを作成したいのですが可能かしら?
現在[会費管理2]というテーブルが無いので[会費管理2]と言うテーブルを追加して、そのテーブルに各フィールドを作成したいのです。
作成したSet tbl = catDB.Tables![会費管理2] に
'以下追加したいフィールド
Set colAdo = New ADOX.Column
With colAdo
.Name = "数値1"
.Type = adInteger
.Attributes = adColNullable
End With
tbl.Columns.Append colAdo
Set colAdo = New ADOX...続きを読む

Aベストアンサー

大変申し訳ございません。
私の勉強不足と思います。

> Set tbl = catDB.Tables![会費管理2]

テーブルが無い時点で、上記はエラーとなる気がします。
というより、
![会費管理2]
という記述したことが無いので、申し訳ありません。

私では解決できないと思いますので、他の方の回答を待ってください。

失礼いたしました。

Q【DIY】テーブル脚の長さを上手く合わせたい

机の横に、同じ高さのテーブルを置いてスペースを拡張したいと考えています。
設置場所の大きさの関係で、天板を690(D)×550(W) t=30mm(厚さは検討中ですが…)で用意しようと思っています。

で、高さなのですが、机の高さが750mmあるので、脚の長さは720mm必要となります。

ところが、この高さにちょうど良い脚がなかなか見つかりません。

http://item.rakuten.co.jp/mokuzaiya/23526/
このあたりはお手軽でちょうど良いのですが、ちょっと長さが足りません。20mmはゴムなどを咬ませるにも微妙な高さですし… アジャスター用の穴をあける道具も無いですし。

もちろん、そこまで完全自作(幕板組んで……までや、もしくは座金の取り付けなど)すれば問題無い話ではあるのですが、まだまだ初心者なのと、あまり道具も揃っているわけではないので、何かお手軽な方法や商品が無いかなぁ…と思いまして。
もし何かご存じなもの、もしくは良い方法があればご案内いただければ幸いです。

ちなみに、添付図では、とりあえずφ60mmの脚が4本、それと天板を貫通する照明スタンド用の穴φ40mm(スタンド脚φ230mm)を書き入れてあります。スタンドの位置はあまり動かせませんが、脚の形は特にはこだわりはありません。(ものを置く関係でなるべくこれ以上太くしたくないですが…)

アドバイスの程、よろしくお願いいたします。

机の横に、同じ高さのテーブルを置いてスペースを拡張したいと考えています。
設置場所の大きさの関係で、天板を690(D)×550(W) t=30mm(厚さは検討中ですが…)で用意しようと思っています。

で、高さなのですが、机の高さが750mmあるので、脚の長さは720mm必要となります。

ところが、この高さにちょうど良い脚がなかなか見つかりません。

http://item.rakuten.co.jp/mokuzaiya/23526/
このあたりはお手軽でちょうど良いのですが、ちょっと長さが足りません。20mmはゴムなどを咬ませるにも微妙な高さですし… ...続きを読む

Aベストアンサー

#2です。

木工ボンドは強力ですよ。
URLの脚の太さより少し小さめの同じように円形に
ホームセンターの糸ノコを借りてカットすれば、
実際 厚みは同じに仕上がるのでガタは無い筈です。

念のためにべニア板と脚はコーススレットで止めてしまえば
何ら問題ないと思います。

コーススレットのネジ頭はべニア板より 深く打ち込む必要はあります
床と接触しないためにも・・・

たかが2cmほどのものを継ぎ足すのですから
不細工な切り方になっても 覗き込まない限り普段が見えませんし、
もし気になるのでしたら ベルトサンダーで真円にも出来ますし
脚の太さと揃えることも可能です。




脚にこだわらないのでしたら
角材をそのまま利用する方法も有ります。

天板に鬼目ナットをねじ込み
http://www.google.co.jp/imglanding?imgurl=http://blog-imgs-27-origin.fc2.com/c/h/i/chitei/spmk00435.jpg&imgrefurl=http://chitei.blog108.fc2.com/blog-entry-163.html&h=293&w=400&sz=31&tbnid=_1fe8ogwlmc-8M:&tbnh=91&tbnw=124&prev=/search%3Fq%3D%25E9%25AC%25BC%25E7%259B%25AE%25E3%2583%258A%25E3%2583%2583%25E3%2583%2588%26tbm%3Disch%26tbo%3Du&zoom=1&q=%E9%AC%BC%E7%9B%AE%E3%83%8A%E3%83%83%E3%83%88&hl=ja&usg=__BA4yAh03XOWl69o-SRpFh-OQOy4%3D&sa=X&ei=tNTRTY_lN4i2sAO_-r2uCQ&ved=0CFgQ9QEwAw

板付きナットを用意して
http://www.yht.co.jp/yds/product.asp?pf_id=17011902300

その後
両切りボルト(ボルトのネジを切っただけの物)を上手に組み合わせれば
金ノコで好みの長さに切れます。

お好みの太さの角材を
ホームセンターで同じ寸法にカットしてもらうだけで良い訳ですから、
こちらの方が化粧された脚を買うことから比べれば
比較にならないくらいお安く出来あがります。

もちろん角(かど)はペーパーなり 鉋がけで少し丸みを持たせます。

すべてホームセンターで揃います。

#2です。

木工ボンドは強力ですよ。
URLの脚の太さより少し小さめの同じように円形に
ホームセンターの糸ノコを借りてカットすれば、
実際 厚みは同じに仕上がるのでガタは無い筈です。

念のためにべニア板と脚はコーススレットで止めてしまえば
何ら問題ないと思います。

コーススレットのネジ頭はべニア板より 深く打ち込む必要はあります
床と接触しないためにも・・・

たかが2cmほどのものを継ぎ足すのですから
不細工な切り方になっても 覗き込まない限り普段が見えませんし、
もし気になるの...続きを読む

Qエクセル A1の値と同じ値の入ったB列のC列の計

A1=10 D1=37
B C
10 15
11 10
10 12
12 1
10 10
A1と同じ値をB列から探し其の行のC列の値の合計をD1に表示したいのです
ご教授ください

Aベストアンサー

数式でやったほうが簡単ですが ・・・
=SUMIF(B1:B5,A1,C1:C5)
または
=SUMPRODUCT((B1:B5=A1)*1,C1:C5)

どうしてもVBAでというなら
標準モジュールに
Function mySum(rCnd as range, vSelect as variant, rSum as Range) as variant
  dim nCount as Long
  nCount = rCnd.rows.Count
  if nCount <> rSum.rows.Count then
    mySum = "---"
  else
    dim vC, vS
    dim n as Integer, value
    vC = rCnd.value
    vS = rSum.Value
    for n = 1 to nCount
      if vC(n,1) = vSelect then
        value = value + vS(n,1)
      end if
    next
    mySum = value
  end if
end Function
D1セルに =mySum(B1:B5, A1, C1:C5) といった数式を記述
といった具合です … 簡易なエラーチェックしかしていません

数式でやったほうが簡単ですが ・・・
=SUMIF(B1:B5,A1,C1:C5)
または
=SUMPRODUCT((B1:B5=A1)*1,C1:C5)

どうしてもVBAでというなら
標準モジュールに
Function mySum(rCnd as range, vSelect as variant, rSum as Range) as variant
  dim nCount as Long
  nCount = rCnd.rows.Count
  if nCount <> rSum.rows.Count then
    mySum = "---"
  else
    dim vC, vS
    dim n as Integer, value
    vC = rCnd.value
    vS = rSum.Value
    for n = 1 to n...続きを読む

Q折りたたみ脚と天板を組み合わせたテーブルについて。

木製の折りたたみ脚の上に天板を乗せたようなデザインのテーブルが欲しいのですが、このようなデザインのテーブルの名称をご存知の方おられましたら教えてください。テーブルというよりはデスクとして使いたいので、奥行きも60cm程のものを探しています。ただ、脚は華奢なものがいいので、DIY等で販売している太めの脚ではないものを希望します。(安定性が少し心配ですが…。)

Aベストアンサー

こんなイメージですか?奥行きが50cmですが・・・?脚はもう少し華奢がいいのかな?

参考URL:http://www.rakuten.co.jp/unidy/500799/500728/511720/511741/#460129

QVB データテーブルA列とB列があった時、B列の1行目から1stepずつデータを入力していきたい

AddDataTableRowメソッドにて
1月として、A列は日付で先に31日分の行が作成されます。その際にB行はNothingで生成しました。
私は、A列はそのままでB列の1行目から1つずつ書き込んでいくコーディングが知りたいです。
現在はAddDataTableRowのためA列の最後の行の次の行が追加され入力されてしまいます。

Aベストアンサー

whereで列BがNothingだけにして、列AのMinの値を取得
列A指定して、狙い打ちでUpdate

Qテーブルの脚の付け方について・・・

木材でダイニングテーブルを作ろうと思っています。
幕板をつけて脚をつけようと思うのですが、どうやってつけていいのかわかりません。
DIY初心者なので、出来るだけ簡単な方法で教えてください!よろしくお願いします。

Aベストアンサー

大きなホームセンターや家具内装系の金物屋に行けば、足だけ売ってます。
一般にはベース金物を設置し、そこにねじ込んで付けるのが多いでしょう。折りたたみ式や、猫足などもあります。

QVBScriptでAccessMDBにテーブルを作成時、値要求はいのフィールドが作成できない。

Access97で使用しているデータベースに、
スクリプトでテーブルを作成する必要が出てきたので、
作成してみたのですが、プロパティで値要求を「はい」に設定しているにも関わらず、
設定する事が出来ませんでした。

設定の仕方が悪いのでしょうか?
下記にサンプルソースを上げました。

教えて頂けると助かります。
よろしくお願い致します。
--------------------------------------
Option Explicit

'データベースパス
Dim strDBPath
Dim strDBName
strDBName = "db1.mdb"
Dim strDBFullPath 'ファイルが存在する場所
strDBFullPath = Replace(WScript.ScriptFullName,WScript.ScriptName, "")
'FileSystemObject
Dim objFS
'SQL文
Dim strSQL
'テーブル名
Const strTBL = "テスト"
'ADOX用定義
Const adBoolean = 11 'ブール値型

Const adColFixed = 1 '値要求 はい
Const adColNullable = 2 '値要求 いいえ

Dim objCat
Dim objTbl
Dim objCol

'ADOオブジェクトを作成します
Set objCat = WScript.CreateObject("ADOX.Catalog")
Set objTbl = WScript.CreateObject("ADOX.Table")

Dim strJoin
strJoin = ""
strJoin = strJoin & "Provider=Microsoft.Jet.OLEDB.4.0;"
strJoin = strJoin & "Data Source=" & strDBFullPath & strDBName & ";"
strJoin = strJoin & "Jet OLEDB:Engine Type=5;"

objCat.ActiveConnection = strJoin
'テーブル名を定義します
objTbl.Name = strTBL
objCat.Tables.Append objTbl

'■列の設定
'フラグ Yes/No型 はい -
Set objCol = WScript.CreateObject("ADOX.Column")
With objCol
' フィールド名
.Name = "フラグ"
' データ型
.Type = adBoolean
' 値要求 はい
.Attributes = adColFixed
End With
objCat.Tables(strTBL).Columns.Append objCol
Set objCol = Nothing

Set objTbl = Nothing
Set objCat = Nothing

Access97で使用しているデータベースに、
スクリプトでテーブルを作成する必要が出てきたので、
作成してみたのですが、プロパティで値要求を「はい」に設定しているにも関わらず、
設定する事が出来ませんでした。

設定の仕方が悪いのでしょうか?
下記にサンプルソースを上げました。

教えて頂けると助かります。
よろしくお願い致します。
--------------------------------------
Option Explicit

'データベースパス
Dim strDBPath
Dim strDBName
strDBName = "db1.mdb"
Dim strDBFul...続きを読む

Aベストアンサー

97の環境がありませんので、実験していませんが、
ADOでコネクションを開き、
strSQL = CON.Execute "ALTER TABLE TABLE2 ALTER COLUMN FIELD1 TEXT(30) NOT NULL"
のようなSQLを発行することによって、「値要求」を「はい」にすることはできます。
既に存在しているデータに制約に違反するものがある場合は、エラーが起きて実行できなかったと思います。
ただし上記SQLをNULLに変えても、NULL値禁止制約は解除されません。(逆向きの操作はできません。)

もひとつ別情報としては、CREATE TABLE の CONSTRAINTでは、NULL値禁止制約を設定することはできません。

(ソースは見つけられません。)

昔、この件で悩んだ事があったような、なかったような・・・

(mdbを)ご利用の際は計画的に!

Q電動のこぎりでテーブル・椅子の脚を切って短くする

ダイニングセットのテーブル・椅子(無垢チーク)ともに高さが高く使いにくいので
(帰国するアメリカ人から譲ってもらいました。靴を履いて生活する前提の高さのようです)
思い切ってダイニングテーブルを座卓にしようと思います。
椅子も我が家にあるテーブルにあるサイズにしたいと思っています。


ホームセンターへ持ち込む、という手もありますが、今回は自分で切ってみたいので
そのアドバイスをよろしくお願いします。

DIY経験はあれども、今まで木材はすべて購入時にカットしてもらっており電動のこぎりを使ったことはありません。丸のこなどは本格的過ぎて危険という声もあり、
BLACK&DECKER 電動式ノコギリ/ジグソー Z-KS900G
BOSCH 電気のこぎり PFZ500E
RYOBI 電気ノコギリ ASK-1000
などが使いやすいのではないかと思っておりますが、どれがより初心者に使いやすいのかわかりません。

テーブルと椅子4脚の脚を切る以外は、粗大ゴミにだすものをカットしたいとも考えております。

上記3点以外のお勧めの電動のこぎり、あるいは 脚をカットする方法などご存知でしたら教えてください。よろしくお願いいたします。

ダイニングセットのテーブル・椅子(無垢チーク)ともに高さが高く使いにくいので
(帰国するアメリカ人から譲ってもらいました。靴を履いて生活する前提の高さのようです)
思い切ってダイニングテーブルを座卓にしようと思います。
椅子も我が家にあるテーブルにあるサイズにしたいと思っています。


ホームセンターへ持ち込む、という手もありますが、今回は自分で切ってみたいので
そのアドバイスをよろしくお願いします。

DIY経験はあれども、今まで木材はすべて購入時にカットしてもらっており電動の...続きを読む

Aベストアンサー

小中学生の夏休みの工作室で今年も20日ほどお世話しました。
椅子を作るにしても 全く同じサイズに切った脚になる角材ですが、作って行くうちにいつの間にか狂いが来るのでしょうね。

脚の長さがぴったり収まったことはありません。

ま、この場合 組み立て途中で何度も「脚の座り」を確認しながら天板などを貼って行けば正確に出来あがります。


さて、
今あるテーブル・椅子の脚が 垂直に下りているのならば直角に切断すればいいことですが、
ハの字型に付いている脚は それなりに注意しないと地面への接点が先ず揃いません。

垂直に下りている場合で 付け根と脚先の太さが同じ場合は マスキングテープ(今はほとんど養生テープを使います)を巻きつければ 必ず直角に切ることが出来ます。

ハの字型の場合は 内側になる個所に印をまず入れますが テープは巻くことが出来ません。
したがって 常に垂直に保持しながら切り落とす長さと同じ長さの棒切れを床に当てて 正確に印を入れていきます。
一度作ったこの棒切れがあなたの物差しです。
決して巻尺などで一回一回測って寸法を出さないでください。

さて、
ここで使ったことも無い電動機具の登場・・・?
それはあまりにも無茶な話です。

特に、丸のこなど切り口に歯が当たっても その先の目標が既に見えませんので絶対に無理なわけです。


精巧に仕上げるためには
お勧めする鋸があります 本来 木材のカット用に作られたものではありませんが
パイプソーをお勧めします。
http://www.google.co.jp/products/catalog?hl=ja&rlz=1T4TRDJ_jaJP451JP451&q=%E3%83%91%E3%82%A4%E3%83%97%E3%82%BD%E3%83%BC240&um=1&ie=UTF-8&tbm=shop&cid=15896247198488288741&sa=X&ei=F_PSTuzgHIWJmQXHtNDYDQ&ved=0CEkQ8wIwAw#

先ず値段が手頃 替刃の交換が出来る よく切れる。

必ず印の上で切るように心掛ければ 先ず切断の失敗はありません。




すべて切り落としました。
平らな床の上で 向きを変えて置いてみましょう。
長いと感じる2本の脚を削る必要が先ず出てきます、その切り口に印を入れます。
当然狂い(ガタ)がある訳です。

そこでほしい道具がベルトサンダーです。
ホームセンターの夏休みの工房では、これですべての脚の長さの調整をしました。
http://store.shopping.yahoo.co.jp/wins/tr-46eb.html

しかしあまり用途が無いのであれば
普通のディスクグラインダー

http://www.rakuten.co.jp/kentikuboy/657814/654488/654490/
ホームセンター 貸し出しあり

ただし角が欠ける心配がありますので 先に角部分の面取りを忘れないように・・・

電動工具でのカットは簡単ですが 後の始末が大変なことがお分かりかと思います。
0.1mmの狂いの補修と0.5mmの狂いの補修
これだけで小一時間違ってきます。


参考までに 金ノコで出来たこのヤスリは重宝します
これでも十分すぎるくらい削れます。
http://hands.net/goods/35575

72歳になるイチローの靴型を作った職人さんが言っていました
「指先の間隔で覚える」

頑張ってください

小中学生の夏休みの工作室で今年も20日ほどお世話しました。
椅子を作るにしても 全く同じサイズに切った脚になる角材ですが、作って行くうちにいつの間にか狂いが来るのでしょうね。

脚の長さがぴったり収まったことはありません。

ま、この場合 組み立て途中で何度も「脚の座り」を確認しながら天板などを貼って行けば正確に出来あがります。


さて、
今あるテーブル・椅子の脚が 垂直に下りているのならば直角に切断すればいいことですが、
ハの字型に付いている脚は それなりに注意しないと地面への接...続きを読む

QAccess2000でテーブル内のフィールド値を全部読み取ってフォームのコンボボックスにリストとして取り込めるか

こんにちは

Access2000でテーブル内のフィールド値を全部読み取ってフォームのコンボボックスにリストとして取り込めるでしょうか。

フィールドの値は数値で、数値の範囲は変動します。

Aベストアンサー

コンボボックスのプロパティで
値集合タイプ:「テーブル/クエリ」
値集合ソース:フィールドを特定するSQL文
にすればいいです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報