Version 16.164.1

This commit is contained in:
Antonio Cañas Vargas 2017-03-24 13:01:42 +01:00
parent 0f4e4325cd
commit 803b15d886
2 changed files with 78 additions and 13 deletions

View File

@ -209,13 +209,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 16.164 (2017-03-24)" #define Log_PLATFORM_VERSION "SWAD 16.164.1 (2017-03-24)"
#define CSS_FILE "swad16.161.css" #define CSS_FILE "swad16.161.css"
#define JS_FILE "swad16.144.js" #define JS_FILE "swad16.144.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/* /*
Version 16.164.1: Mar 24, 2017 Statistics about types of degree depends on the selected scope. (217575 lines)
Version 16.164: Mar 24, 2017 New figure in statistics: types of degree. (217510 lines) Version 16.164: Mar 24, 2017 New figure in statistics: types of degree. (217510 lines)
Version 16.163: Mar 24, 2017 Types of degree can be ordered by name and by number of degrees. Version 16.163: Mar 24, 2017 Types of degree can be ordered by name and by number of degrees.
Integer fields in database queries without single quotes. (217434 lines) Integer fields in database queries without single quotes. (217434 lines)

View File

@ -505,18 +505,82 @@ void DT_GetListDegreeTypes (void)
unsigned long NumRow; unsigned long NumRow;
/***** Get types of degree from database *****/ /***** Get types of degree from database *****/
sprintf (Query,"(SELECT deg_types.DegTypCod," switch (Gbl.Scope.Current)
"deg_types.DegTypName AS DegTypName," {
" COUNT(degrees.DegCod) AS NumDegs" case Sco_SCOPE_SYS:
" FROM deg_types,degrees" /* Get
" WHERE deg_types.DegTypCod=degrees.DegTypCod" all degree types with degrees
" GROUP BY degrees.DegTypCod)" union with
" UNION " all degree types without any degree */
"(SELECT DegTypCod,DegTypName,0 AS NumDegs" // Do not use '0' because NumDegs will be casted to string and order will be wrong sprintf (Query,"(SELECT deg_types.DegTypCod,deg_types.DegTypName,"
" FROM deg_types" "COUNT(degrees.DegCod) AS NumDegs"
" WHERE DegTypCod NOT IN (SELECT DegTypCod FROM degrees))" " FROM degrees,deg_types"
" ORDER BY %s", " WHERE degrees.DegTypCod=deg_types.DegTypCod"
OrderBySubQuery[Gbl.Degs.DegTypes.SelectedOrder]); " GROUP BY degrees.DegTypCod)"
" UNION "
"(SELECT DegTypCod,DegTypName,0 AS NumDegs" // Do not use '0' because NumDegs will be casted to string and order will be wrong
" FROM deg_types"
" WHERE DegTypCod NOT IN"
" (SELECT DegTypCod FROM degrees))"
" ORDER BY %s",
OrderBySubQuery[Gbl.Degs.DegTypes.SelectedOrder]);
break;
case Sco_SCOPE_CTY:
/* Get only degree types with degrees in the current country */
sprintf (Query,"SELECT deg_types.DegTypCod,deg_types.DegTypName,"
"COUNT(degrees.DegCod) AS NumDegs"
" FROM institutions,centres,degrees,deg_types"
" WHERE institutions.CtyCod=%ld"
" AND institutions.InsCod=centres.InsCod"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY degrees.DegTypCod"
" ORDER BY %s",
Gbl.CurrentCty.Cty.CtyCod,
OrderBySubQuery[Gbl.Degs.DegTypes.SelectedOrder]);
break;
case Sco_SCOPE_INS:
/* Get only degree types with degrees in the current institution */
sprintf (Query,"SELECT deg_types.DegTypCod,deg_types.DegTypName,"
"COUNT(degrees.DegCod) AS NumDegs"
" FROM centres,degrees,deg_types"
" WHERE centres.InsCod=%ld"
" AND centres.CtrCod=degrees.CtrCod"
" AND degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY degrees.DegTypCod"
" ORDER BY %s",
Gbl.CurrentIns.Ins.InsCod,
OrderBySubQuery[Gbl.Degs.DegTypes.SelectedOrder]);
break;
case Sco_SCOPE_CTR:
/* Get only degree types with degrees in the current centre */
sprintf (Query,"SELECT deg_types.DegTypCod,deg_types.DegTypName,"
"COUNT(degrees.DegCod) AS NumDegs"
" FROM degrees,deg_types"
" WHERE degrees.CtrCod=%ld"
" AND degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY degrees.DegTypCod"
" ORDER BY %s",
Gbl.CurrentCtr.Ctr.CtrCod,
OrderBySubQuery[Gbl.Degs.DegTypes.SelectedOrder]);
break;
case Sco_SCOPE_DEG:
case Sco_SCOPE_CRS:
/* Get only degree types with degrees in the current degree */
sprintf (Query,"SELECT deg_types.DegTypCod,deg_types.DegTypName,"
"COUNT(degrees.DegCod) AS NumDegs"
" FROM degrees,deg_types"
" WHERE degrees.DegCod=%ld"
" AND degrees.DegTypCod=deg_types.DegTypCod"
" GROUP BY degrees.DegTypCod"
" ORDER BY %s",
Gbl.CurrentDeg.Deg.DegCod,
OrderBySubQuery[Gbl.Degs.DegTypes.SelectedOrder]);
break;
default:
Lay_ShowErrorAndExit ("Wrong scope.");
break;
}
Gbl.Degs.DegTypes.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get types of degree"); Gbl.Degs.DegTypes.Num = (unsigned) DB_QuerySELECT (Query,&mysql_res,"can not get types of degree");
/***** Get degree types *****/ /***** Get degree types *****/