0

これはOracle 11gにあります。テーブルがあります:LOG。これには、以下のように2つの列が含まれています。

ticketid
comments

(他の列の中で)を含む別のテーブルAPP_ACCESSがあります

user_id
appl_id
env_id
ticketid

APP_ACCESS の user_id、appl_id、および env_id は、LOG テーブルのコメント列の一部です。そのような部分 (3 つすべて) が存在する場合は常に、LOG テーブルから ticketid を取得し、APP_ACCESS を更新する必要があります。

私が試したのは以下のとおりです(チケットID自体の取得に失敗しています。何も返されません):

select L.ticketid from LOG L join APP_ACCESS U
on INSTR(L.COMMENTS, U.USER_ID) > 0 and INSTR(L.COMMENTS, U.APPL_ID) > 0

#1 コメント列のサンプル データを編集します (注: これは 1 つのセル、つまり 1 つの列、1 つの行に相当するデータです):

ATTEMPTED: MANAGERCOMMENTS="TEST",AFTER: MANAGERCOMMENTS="TEST"
ATTEMPTED: JUSTIFICATION="TEST",AFTER: JUSTIFICATION="TEST"
ATTEMPTED: REQUESTORDIVISION="DOF",AFTER: REQUESTORDIVISION="DOF"
ATTEMPTED: USERSELECTED="VEXUSERTEST",AFTER: USERSELECTED="VEXUSERTEST"
ATTEMPTED: REQUESTTYPE="CHANGE ACCESS",AFTER: REQUESTTYPE="CHANGE ACCESS"
ATTEMPTED: REQUESTORREGION="WASHINGTON",AFTER: REQUESTORREGION="WASHINGTON"
ATTEMPTED: ENVIRONMENTSELECTED="DEVELOPMENT",AFTER: ENVIRONMENTSELECTED="DEVELOPMENT"
ATTEMPTED: REQUESTORCOMMENTS="TEST",AFTER: REQUESTORCOMMENTS="TEST"
ATTEMPTED: APPLICATIONSELECTED="TEST_APP",AFTER: APPLICATIONSELECTED="TEST_APP"
ATTEMPTED: REQUESTOR="PRTEST",AFTER: REQUESTOR="PRTEST"
ATTEMPTED: ADDEDACCESSLEVELS="DEFAULT ACCESS",AFTER: ADDEDACCESSLEVELS="DEFAULT ACCESS"

USERSELECTED=" の後の文字列は、APP_ACCESS テーブルの USER_ID と同じです。APPLICATIONSELECTED=" の後の文字列は、APP_ACCESS テーブルの APPL_ID と同じです。同様に、ENVIRONMENTSELECTED= の後の文字列は、APP_ACCESS テーブルの ENV_ID にマップされます。

4

2 に答える 2

1

おっと、返信が遅くなってすみません。数分前まであなたの更新された投稿を見ていませんでした。

完成したクエリがどのように表示されるかは 100% わかりませんが、LogApp_Accessテーブルを比較すると、ロジックは次のようになります。

 INSTR(L.Comments, 'USERSELECTED="' || U.User_ID || '"') > 0 AND
 INSTR(L.Comments, 'APPLICATIONSELECTED="' || U.Appl_ID || '"') > 0 AND
 INSTR(L.Comments, 'ENVIRONMENTSELECTED="' || U.Env_ID || '"') > 0

必要に応じて、WHERE句またはJOIN条件の一部としてこれを使用できます。これがあなたを前進させるのに十分であることを願っています。

于 2013-05-02T13:58:14.267 に答える