1

クエリから複数の値を取得しています。

select l_t_id from MLTalukDetails join MLDistrictDetails on MLTalukDetails.L_D_Id=4

13,14,15,16 を返します。ここで、これらの値を一度に取得し、それらの値から詳細を取得したいと考えています。

select Sc_Id from MSchoolDetails 
where 
MSchoolDetails.L_T_Id=@talukid and 
MSchoolDetails.Y_Id=@yearid

このシナリオで何ができますか。ここで for ループ構文を使用するにはどうすればよいですか?

4

2 に答える 2

1

あなたの質問から、これがあなたが実際に探している完全なソリューションであると推測しています。

    SELECT MSchoolDetails.* 
      FROM MLTalukDetails
INNER JOIN MSchoolDetails ON MTalukDetails.l_t_id = MSchoolDetails.L_T_Id
     WHERE MLTalukDetails.L_D_ID = 4 AND MSchoolDetails.Y_Id=@yearid

通常は、両方のテーブルを含む結合条件があります。

さまざまな結合について読むことをお勧めします。

于 2012-08-13T04:51:42.110 に答える
0

ループを使用する場合は、カーソルを使用してください....ストアドプロシージャで実装した回避策を次に示します....

CREATE PROCEDURE [dbo].[proc_GetSc_Id]
@yearid INT
AS
CREATE TABLE #Sc_Id(Sc_Id varchar(20))
BEGIN       
DECLARE @talukid varchar(20)

    declare c cursor For 
    select l_t_id from MLTalukDetails join MLDistrictDetails on MLTalukDetails.L_D_Id=4

open c
    fetch next from c into @talukid
    while(@@FETCH_STATUS=0)
    BEGIN
        insert into #Sc_Id(Sc_Id) 
            select Sc_Id from MSchoolDetails where MSchoolDetails.L_T_Id=@talukid and MSchoolDetails.Y_Id=@yearid
        fetch next from c into @talukid
    END
    select * from  #Sc_Id;---Here you got your final result.
close c
deallocate c
DROP TABLE #Sc_Id
END
于 2012-08-13T04:54:36.987 に答える