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 *****************************/
/*****************************************************************************/
#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 JS_FILE "swad16.144.js"
// 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
/*
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.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)

View File

@ -505,18 +505,82 @@ void DT_GetListDegreeTypes (void)
unsigned long NumRow;
/***** Get types of degree from database *****/
sprintf (Query,"(SELECT deg_types.DegTypCod,"
"deg_types.DegTypName AS DegTypName,"
" COUNT(degrees.DegCod) AS NumDegs"
" FROM deg_types,degrees"
" WHERE deg_types.DegTypCod=degrees.DegTypCod"
" 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]);
switch (Gbl.Scope.Current)
{
case Sco_SCOPE_SYS:
/* Get
all degree types with degrees
union with
all degree types without any degree */
sprintf (Query,"(SELECT deg_types.DegTypCod,deg_types.DegTypName,"
"COUNT(degrees.DegCod) AS NumDegs"
" FROM degrees,deg_types"
" WHERE degrees.DegTypCod=deg_types.DegTypCod"
" 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");
/***** Get degree types *****/