0

簡単なクエリから始めます…</p>

SELECT UserID AS ‘User ID’, UserName AS ‘User Name’ FROM tblUsers

OUTPUT:
User ID User Name
1   Joe
2   Bob
3   Larry

ただし、ユーザー ID を入力として受け取るストアド プロシージャを実行する必要があります。

GetUsersLastTransaction(pID_User) 

誰の SQL かは何でも構いません ( SELECT <whatever> WHERE <whatever> = UserID)

GetUsersAccountBalance(pID_User)

繰り返しますが、SQL は何でもかまいません ( SELECT <whatever> WHERE <whatever> = UserID)

では、このような単一のデータテーブルを提供するクエリを作成するにはどうすればよいですか

OUTPUT:
User ID User Name   Last Transaction    Account Balance
1   Joe     Transaction xyz     1000
2   Bob     Transaction pdq     1500
3   Larry       Transaction abc     1110

SELECT UserID AS ‘User ID’, UserName AS ‘User Name’, (
    SELECT <whatever>  
    WHERE <whatever> = ????
) AS ‘Last Transaction’, (
    SELECT <whatever>  
    WHERE <whatever> = ????
) AS ‘Account Balance’

では、サブクエリの where 句 (????) で最初の列 ('User ID') の値を使用し、それを各行で機能させるにはどうすればよいでしょうか?

4

2 に答える 2

0

これではうまくいきません。これから行うことは、ストアド プロシージャの Row By Row 実行です。つまり、結果セットの N 行に対して、ストアド プロシージャを N 回実行することになります。一度だけ実行されるセットベースのアプローチ(以下で説明)を行うのとは対照的です。

より効率的なのは (ただし、コードの再利用はあまりありません)、select ステートメントの結果を一時テーブルに入れることです。次に、ストアド プロシージャのロジックをコピーし、一時テーブルで結合を行います。

于 2013-09-19T14:42:53.223 に答える