以下はサーバー側の処理をしないコードですが、多くの行が生成され、大幅に成長するため、サーバー側の処理を使用する必要があります。Datatablesサーバー側処理INNER JOINまたは複数のテーブル
DBテーブル(ないすべてのフィールドが含まれているが、これらは私が欲しいものであり、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 /じぶんの');
INNERため、この作業は、サーバー側の処理を行わず
$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バージョンのJOINになります。
$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に組み込むことはできますか?
ご指摘いただければ幸いです。 ありがとうございます。やるクエリをログに記録する -
:私はDB構造の問題を修正した:ニコラPeluchetti。ありがとうございました – Codded
@:Nicola Peluchetti:INNER JOINの最新情報、これは正しいですか? – Codded
@Coddedはいそれはうまくいくはずですが、いずれにせよ、あなたはfirephpを使用してクエリをログに記録し、mysqlで正しいことを確認する必要があります –