1

以下は私が書いた私のSQLコードですが、物事が複製されていることに気づきました。これは受け入れられません。私はSQLにあまり精通しておらず、これに問題があり、助けていただければ幸いです。また、これを編集したので、ここに余分なテーブルがあることがわかりますが、これによりパフォーマンスが低下しますか?

select distinct
ru.registername AS [1]
,lc.lifecyclename AS [2]
,s.statename AS [3]
,t.timername AS [4]
,t.lastexecuted AS [5]
from hsi.wfsrvrxlcstate wxs with (nolock)
join hsi.registeredusers ru with (nolock) on wxs.registernum = ru.registernum
join hsi.lcstate s with (nolock) on wxs.statenum = s.statenum
join hsi.lcxstate lxs with (nolock) on s.statenum = lxs.statenum
join hsi.lifecycle lc with (nolock) on lxs.lcnum = lc.lcnum
join hsi.lcstatextimer sxt on s.statenum = sxt.statenum
join hsi.lctimer t on sxt.timernum = t.timernum
join hsi.tasklist tl with (nolock) on t.actionnum = tl.tasklistnum
join hsi.tasklistxtask tlxa with (nolock) on tl.tasklistnum = tlxa.tasklistnum
join hsi.action a with (nolock) on tlxa.tasknum = a.actionnum
order by  registername, lastexecuted desc, lifecyclename

事前にすべての助けをありがとう!

4

1 に答える 1

0

問題のすべてのテーブルのデータを確認せずに質問に答えるのは不可能です :'(

... しかし、そうは言っても、DISTINCT ステートメントに屈することを拒否する複雑な結合に悩まされている場合は、通常、次のトリックに頼ります。

selectステートメントで、テーブルに関連するすべてのフィールドを表示します。あなたの場合:

select distinct wxs.*, ru.*, s.*.....etc
from ... as per your original query
join ... as per your original query

クエリを実行し、すべての table_name.id 列を監視します。重複行と元のテーブルは、主キーが 2 回表示されるため、簡単に見つけることができます。見つけやすくするために、すべての PK ごとに並べる必要がある場合があります。

これにより、欠落している FK 結合を見つけるために必要な手がかりが得られます。

幸運を!

于 2013-01-29T15:11:36.633 に答える