作为项目的一部分,我有jQuery DataTable API用于从单个"客户"表,它通过ajax调用服务器上的PHP文件显示正常。
然而,尽管阅读和研究很多,但我无法弄清楚如何使用DataTables来显示从select语句返回的列。我的PHP代码低于从customers表中获取请求的列:
<?php
// DB table to use
$table = 'customers';
// Table's primary key
$primaryKey = 'id';
// Array of database columns which should be read and sent back to DataTables.
// The `db` parameter represents the column name in the database, while the `dt`
// parameter represents the DataTables column identifier. In this case simple
// indexes
$columns = array(
array( 'db' => 'id', 'dt' => 0 ),
array( 'db' => 'first_name', 'dt' => 1 ),
array( 'db' => 'last_name', 'dt' => 2 ),
array( 'db' => 'email', 'dt' => 3 )
);
// SQL server connection information
$sql_details = array(
'user' => 'root',
'pass' => 'root',
'db' => 'NCI_BANK',
'host' => 'localhost'
);
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* If you just want to use the basic configuration for DataTables with PHP
* server-side, there is no need to edit below this line.
*/
require( 'ssp.class.php' );
echo json_encode(
SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);
?>
我想说的是:
SELECT * FROM accounts a
JOIN customers b ON (a.customer_id = b.id)
WHERE b.id = 8;"
这将返回13列。
有人可以帮忙吗?
答案 0 :(得分:1)
班级ssp.class.php
不支持JOIN
和子查询,但有一种解决方法。诀窍是使用$table
定义中的子查询,如下所示。
$table = <<<EOT
(
SELECT
a.id,
a.first_name,
a.last_name,
b.email
FROM accounts a
JOIN customers b ON a.customer_id = b.id
WHERE b.id = 8
) temp
EOT;
$primaryKey = 'id';
$columns = array(
array( 'db' => 'id', 'dt' => 0 ),
array( 'db' => 'first_name', 'dt' => 1 ),
array( 'db' => 'last_name', 'dt' => 2 ),
array( 'db' => 'email', 'dt' => 3 )
);
$sql_details = array(
'user' => '',
'pass' => '',
'db' => '',
'host' => ''
);
require( 'ssp.class.php' );
echo json_encode(
SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);
您还需要修改ssp.class.php
并将FROM `$table`
的所有实例替换为FROM $table
以删除反引号。
确保所有列名称都是唯一的,否则请使用AS
指定别名。
还有github.com/emran/ssp存储库,其中包含支持ssp.class.php
的增强型JOIN
。
有关详细信息,请参阅jQuery DataTables: Using WHERE, JOIN and GROUP BY with ssp.class.php。
答案 1 :(得分:0)
查询将是
("select * from Table
inner join Table1
on Table.campo= Table1.campo
inner join Table2
on table.campo = Table2.Campo") Table