diff options
Diffstat (limited to 'mayor-orig/mayor-naplo/update/pre004789-2-intezmeny.sql')
-rw-r--r-- | mayor-orig/mayor-naplo/update/pre004789-2-intezmeny.sql | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/mayor-orig/mayor-naplo/update/pre004789-2-intezmeny.sql b/mayor-orig/mayor-naplo/update/pre004789-2-intezmeny.sql new file mode 100644 index 00000000..4dd6c244 --- /dev/null +++ b/mayor-orig/mayor-naplo/update/pre004789-2-intezmeny.sql @@ -0,0 +1,44 @@ +DELIMITER // + DROP FUNCTION IF EXISTS diakNaploSorszam // + CREATE function diakNaploSorszam ( thisDiakId INT, thisTanev INT, thisOsztalyId INT ) returns INT + READS SQL DATA + BEGIN + DECLARE inKezdesDt,inZarasDt DATE; + DECLARE a,i INT; -- for loop + DECLARE b DATE; -- for loop + DECLARE c DATE; + DECLARE d INT; + DECLARE e VARCHAR(255); + + DECLARE cur1 + CURSOR FOR + SELECT diakId,IF(beDt<inKezdesDt,inKezdesDt,beDt) AS tolDt,IF(ifnull(kiDt,inZarasDt)<inZarasDt,kiDt,inZarasDt) AS igDt, + (SELECT COUNT(*) FROM diakJogviszony AS ds + WHERE ds.diakId=diak.diakId AND tolDt<dt AND dt<=igDt AND ds.statusz IN ('jogviszonyban van','magántanuló','egyéni munkarend') + ) AS aktJogviszonyDb, + (SELECT statusz FROM diakJogviszony AS ds + WHERE ds.diakId=diak.diakId AND dt<=tolDt ORDER BY dt DESC LIMIT 1 + ) AS elozoStatusz + FROM osztalyDiak LEFT JOIN diak USING (diakId) + WHERE osztalyId=thisOsztalyId AND beDt<=inZarasDt AND (kiDt IS NULL OR kiDt>=inKezdesDt) + HAVING (aktJogviszonyDb>0 or elozoStatusz in ('magántanuló','jogviszonyban van','egyéni munkarend')) + ORDER BY tolDt, CONCAT_WS(' ',viseltCsaladinev,viseltUtonev) COLLATE utf8_hungarian_ci; + + DECLARE EXIT HANDLER FOR NOT FOUND RETURN NULL; + SELECT kezdesDt FROM szemeszter WHERE tanev=thisTanev AND szemeszter=1 INTO inKezdesDt; + SELECT MAX(zarasDt) FROM szemeszter WHERE tanev=thisTanev INTO inZarasDt; + + SET i := 1; + OPEN cur1; + lo: LOOP +-- FETCH cur1 INTO a,b; + FETCH cur1 INTO a,b,c,d,e; + IF a = thisDiakId THEN + LEAVE lo; + END IF; + SET i := i+1; + END LOOP; + CLOSE cur1; + return i; + END; // + DELIMITER ; // |