[リストへもどる]
一括表示

投稿時間:2002/08/15(Thu) 11:10
投稿者名:さー
Eメール:
URL :
タイトル:
SQL Select文について
Selectのあと、必ず列名でないとダメですよね?

テーブルBの項目bとテーブルCの項目cが一致したとき、テーブルAの項目aに、X(数字)-c(数字)
を入れる
 という作業をしたいのです。(各テーブル同じキーを持っています)

insert into A(a) select X-c from B,C where B.b=C.c 

こんな感じにしてみたのですが・・・
この X-c の部分はどうしたら良いのでしょうか?

投稿時間:2002/08/15(Thu) 11:41
投稿者名:とろ
Eメール:
URL :
タイトル:
Re: SQL Select文について
> Selectのあと、必ず列名でないとダメですよね?
そんなことはありません。
固定の文字列や数値でも、四則演算などを含んでいても、大丈夫です。

例えば、
T1 というテーブルに2レコード存在したとします。
そうすると、 "select * from T1" というクエリで
2レコード抽出されます。(これは分かりますよね?)

その場合、 "select 'ABC' as tF1, 987 as tF2 from T1"
というクエリを実行すると、結果は次のようになります。
   tF1  tF2
   ---- ----
   ABC   987
   ABC   987

だから
> insert into A(a) select X-c from B,C where B.b=C.c 
つまり、
insert into A(a) select '9-3' from B,C where B.b=C.c
とかで大丈夫です。

投稿時間:2002/08/15(Thu) 11:49
投稿者名:とろ
Eメール:
URL :
タイトル:
Re^2: SQL Select文について
> > insert into A(a) select X-c from B,C where B.b=C.c 
> つまり、
> insert into A(a) select '9-3' from B,C where B.b=C.c
> とかで大丈夫です。

X や c が数値型のフィールドならば、
文字列に変換した後、間に '-' を連結っていう感じかな。

投稿時間:2002/08/15(Thu) 11:58
投稿者名:さー
Eメール:
URL :
タイトル:
Re^3: SQL Select文について

> X や c が数値型のフィールドならば、
> 文字列に変換した後、間に '-' を連結っていう感じかな。

ふむふむ。
ありがとうございます。
いまいち’’のつける場所などわかっていなくて、どこか抜けているのかもしれません。
やり方はあっているようなのでもう一度見てみます。

もともとX、cは日付から持ってきた数字で、
バリアント型にしてみたのですが文字型にした方がいいですか?

投稿時間:2002/08/15(Thu) 12:03
投稿者名:とろ
Eメール:
URL :
タイトル:
Re^4: SQL Select文について
> もともとX、cは日付から持ってきた数字で、
> バリアント型にしてみたのですが文字型にした方がいいですか?

データベースが何なのかも分からないし、
どのようにしたいのかも分からないので、
わかりません!

ただ、 A.a が文字列型ならば、最終的に文字列型として、
insert した方が無難です。

バリアント型っていうことは、 X や c て VB での変数ですか?

投稿時間:2002/08/16(Fri) 09:33
投稿者名:A221
Eメール:
URL :
タイトル:
Re^4: SQL Select文について
> もともとX、cは日付から持ってきた数字で、

SQLServerかAccessならSQLで使用できる日付の関数に
DateAdd・DateDiff・DatePartがありますよ。

SELECT a,b,DATEADD(day,a,b) From foo
-----------------------------------------
a       b        DATEADD(day,a,b)
-----------------------------------------
1    2002/8/15   2002/8/16
-1   2002/8/15   2002/8/14
-----------------------------------------
DateDiffも記述は同じです。