- PR -

SQLのロジックについて

投稿者投稿内容
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-03-07 10:02
質問2について、以前私が書いたものは未推敲だったために一度削除したのですが、
それを参考にしてだとするとちょっと間違っている気がします。
コード:
UPDATE [テーブル] SET 更新項目
WHERE 社員コード=' ' AND 連番 =
(SELECT MIN(連番) FROM [テーブル] WHERE 社員コード='対象の社員コード')


これだと、何かよくわからないものを更新している気がするので、
コード:
UPDATE [テーブル] SET 更新項目
WHERE 社員コード='対象の社員コード' AND 連番 =
(SELECT MIN(連番) FROM [テーブル] WHERE 社員コード='対象の社員コード' AND 名前='')


あたりだと思うのですが…

で、一度ワークにとるかどうかです。
処理が、
・このテーブルから別の情報(たとえば社員番号)も取得
・加工
・テーブルを更新
という流れであればワークにとるのもいいのですが、
対象となる社員は別の手段で取得(たとえば外部データより入力)して、
単にこのテーブルの更新をしたいだけなら上記サブクエリーで処理したほうが
いいのではないかと思います。
未記入
常連さん
会議室デビュー日: 2005/02/21
投稿数: 20
投稿日時: 2005-03-07 10:10
にしざき様



UPDATE [テーブル]
SET
更新項目a = 更新対象 

FROM [テーブル],
WHERE
名前 = ' ' AND
連番 = (SELECT MIN(連番)
FROM [テーブル],
WHERE
名前 = ' '

これで、更新できました

ちょっと書き方が乱雑かもしれませんが
にしざき様の書き方でヒントを得ました
ありがとうございました
未記入
常連さん
会議室デビュー日: 2005/02/21
投稿数: 20
投稿日時: 2005-03-07 11:38
もう一つの質問の件

具体的に書くと・・・

DECLARE
@A char(13),
@B1 char(7),
@B90 int,
@B91 int,
@B92 int,
@B2 char(5),
@B3 char(5)

set @A = '099-234-5678 '

set @B90 = CHARINDEX('-',@A)

set @B1 = SUBSTRING(@A, 0, CHARINDEX('-', @A))
set @B91 = CHARINDEX('-' ,@A ,+@B90 +1)
set @B92 = @B91 - @B90
set @B2 = SUBSTRING(@A, (CHARINDEX('-', @A) +1) ,@B92 -1)
set @B92 = 13 - @B91
set @B3 = SUBSTRING(@A, @B91+1 ,@B92)

これで’−’の場所が不定でもできました
ありがとうございました


[ メッセージ編集済み 編集者: 未記入 編集日時 2005-03-07 11:39 ]

スキルアップ/キャリアアップ(JOB@IT)