while-Schleife zum einfügen von Daten in Tabelle in sql

 declare @temp int,
@temp1 int,
@temp2 int,
@temp3 int,
@temp4 int,
@temp5 int,
@modid int,
@supid int,
@sid varchar(50)
begin tran
select * from StudentSupervisor;

select @temp = count(*) from Students s where s.IsLockedOut = '0' and s.IsGraduated = '0'; 
select @temp1 = count(*)  from staffs st where st.IsLockedOut ='0';



set @temp5 = round(@temp/@temp1,0);

WHILE (select count(*) from students s where s.IsLockedOut ='0' and s.StudentId not in (select ss.StudentId from StudentSupervisor ss where s.StudentId = ss.StudentId and ss.IsApproved = 1)) != 0

BEGIN


select top 1 @sid = s.studentid from students s, StudentSupervisor ss where s.IsLockedOut ='0' and s.StudentId not in (select s.StudentId where s.StudentId = ss.StudentId and ss.IsApproved = 1);


select top 1 @supid = st.Staffid, @modid = st.moderatorid from Staffs st where st.IsLockedOut =0 and Quota <=@temp5;

        insert into StudentSupervisor 
        (StudentId,SupervisorId,ModeratorId,IsApproved)
    values
        (@sid,@supid,@modid,1)
        update Staffs set quota +=1 where staffs.StaffID = @supid;

END


select * from StudentSupervisor;

ROLLBACK  tran

Hallo alle, ich bin ziemlich festgefahren auf diese Logik und ich habe Suche für eine Lösung, aber ich bekomme nichts, nachdem über Nacht arbeiten, lassen Sie mich klar mit meiner situation, nun, als erstes würde ich gerne nehmen, Anzahl der Schüler, die nicht in studentsupervisor Tabelle oder in studentsupervisor Tisch, aber isapproved !=1, dann nehme ich die Anzahl der Mitarbeiter, die Quote ist nicht mehr als die Summe der Schüler /Gesamtzahl der Mitarbeiter,danach würde ich gerne die Pumpe Studenten gemeinsam mit den Mitarbeitern in studentsupervisor Tisch, während Sie noch verfügbar.. bitte lassen Sie mich wissen, was falsch mit meinem dynamischen Abfrage, Dank

  • warum nicht eine Schleife verwenden, die in Ihrem business-Logik, nicht die in Ihr gespeicherte Prozedur so viel wie möglich
InformationsquelleAutor willie | 2012-12-26
Schreibe einen Kommentar