gpt4 book ai didi

jquery - Datatables服务器端处理INNER JOIN或多表

转载 作者:行者123 更新时间:2023-12-01 01:03:05 31 4
gpt4 key购买 nike

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

<小时/>

数据库表(并非包括所有字段,但这些是我想要的字段和 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 '<tr>';
echo '<td>'.$thecat->name.'</td>';
echo '<td>'.$thecourse->fullname.'</td>';
echo '<td>'.$themodule->name.'</td>';
echo '<td>';
echo date('d/m/Y', $mod->added);
echo'</td>';
echo '</tr>';
}

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

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

或者我可以将上述方法合并到 server_processing.php 中吗?

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

最佳答案

回答问题:问题是有 2 个列名相同,所以我在 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());

关于jquery - Datatables服务器端处理INNER JOIN或多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870154/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com