数据表服务器端处理INNER JOIN或多个表

下面是我没有服务器端处理的代码,但由于它产生了很多行并且会大大增加,我需要使用服务器端处理。


数据库表(不包括所有字段,但这些是我想要的和INNER JOIN的字段):

course_modules - id (pk), course(course.id), module(module.id), added(UNIXTIMESTAMP) course - id (pk), category(course_categories.id), fullname(text) course_categories- id (pk), name(text) modules- id (pk), name(text) 

我希望能够将UNIXTIMESTAMP显示为日期(’d / m / Y’);


这适用于INNER JOIN

 $sQuery = " SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))." FROM $sTable INNER JOIN modules ON $sTable.module = modules.id INNER JOIN course ON $sTable.course = course.id INNER JOIN course_categories ON course.category = course_categories.id $sWhere $sOrder $sLimit "; 

没有服务器端处理的原始php版本:

 $mods = get_records_sql("SELECT * FROM {$CFG->prefix}course_modules"); foreach ($mods as $mod) { $thecourse = get_record('course','id',$mod->course); $themodule = get_record('modules','id',$mod->module); $thecat = get_record('course_categories','id',$thecourse->category); echo ''; echo ''.$thecat->name.''; echo ''.$thecourse->fullname.''; echo ''.$themodule->name.''; echo ''; echo date('d/m/Y', $mod->added); echo''; echo ''; } 

我的服务器端处理与我的数据表很好,但没有链接到其他表。 此表仅返回ID,我希望能够从另一个表中获取值,如上所示。

我需要使用内在的加入吗? 如果是这样,我如何与server_processing.php脚本合并:我使用了这个: http : //datatables.net/release-datatables/examples/data_sources/server_side.html

或者我可以在server_processing.php中包含我的上述方法。

任何指导将不胜感激。 提前致谢。

对问题的回答:问题有两个列名相同所以我在SQL查询中使用了alises。 也没有使用INNER JOIN。

使用别名和列名的列数组:

 $aColumns = array( 'catname', 'fullname', 'modulename', 'added'); 

4个表的SQL查询:

 $sQuery = " SELECT mdl_course.fullname, mdl_modules.name AS modulename, mdl_course_categories.name AS catname, mdl_course_modules.added FROM mdl_course_modules, mdl_modules, mdl_course, mdl_course_categories WHERE mdl_course_modules.module = mdl_modules.id AND mdl_course_modules.course = mdl_course.id AND mdl_course.category = mdl_course_categories.id $sOrder $sLimit "; $rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error()); 

是的我认为你应该使用内连接(但我需要更多关于表的详细信息来编写确切的查询)然后你必须在这里修改sql

  $sQuery = " SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))." FROM $sTable $sWhere $sOrder $sLimit "; $rResult = mysql_query( $sQuery, $gaSql['link'] ) or die(mysql_error()); 

编辑 – 记录查询吗

 $filename = __DIR__.DIRECTORY_SEPARATOR."logging.txt"; file_put_contents($filename, $sQuery, FILE_APPEND); 

你应该在脚本的同一目录中有一个logging.txt文件