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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe Schwierigkeiten zu verstehen, Ihre Frage. Ich denke, deine Schleife Bedingung sollte sein:
Je nachdem, was Sie versuchen zu tun, in der Schleife, wird es wahrscheinlich möglich sein, entfernen Sie die Schleife. Wenn Sie können, aktualisieren Sie Ihre Frage mit mehr Details, was passiert in der Schleife und ein Beispiel werde ich versuchen, um eine vollständige Antwort.
Update:
In diesem Fall würde ich das update auch die erste Zeile in der Schleife:
Update2 Tabelle variable option:
Wenn die oben nicht funktionieren, dann aktualisieren Sie bitte Ihre Frage zu enthalten, die das schema für die Tabelle ist, so kann ich es testen auf meinem system.