一尘不染

如何使用ssp.class.php联接两个表

mysql

我开始将DataTables
Table插件用于jQuery
,但遇到了一些问题。我从这里使用示例代码。

我有MySQL表女巫看起来像这样:

id | 名称| Father_id

father_idid同一表中仅在不同行中的值。因此,如果我想知道父亲的名字,我必须在同一个表中进行搜索WHERE id = father_id。但是DataTable所做的只是按原样显示MySQL表的内容。

在我的数据表中,我想显示如下数据:

id | 名称| 父亲名| Father_id

因此,当DataTable从MySQL表中获取数据时,但是在创建表之前,我想更改列值,该列值当时是father_idMySQL中同一行中的值。我也想father_name通过特定的搜索来添加它father_id


阅读 309

收藏
2020-05-17

共1个答案

一尘不染

正如PaulF所指出的,您需要使用JOIN或子查询从同一张表中检索父亲的名字。

我假设您是ssp.class.php根据您提到的示例在服务器端处理数据的。

ssp.class.php不支持联接和子查询,但是有一种解决方法。诀窍是使用$table定义如下所示的子查询。table在子查询中替换为您的实际表名。

$table = <<<EOT
 (
    SELECT 
      a.id, 
      a.name, 
      a.father_id, 
      b.name AS father_name
    FROM table a
    LEFT JOIN table b ON a.father_id = b.id
 ) temp
EOT;

$primaryKey = 'id';

$columns = array(
   array( 'db' => 'id',          'dt' => 0 ),
   array( 'db' => 'name',        'dt' => 1 ),
   array( 'db' => 'father_id',   'dt' => 2 ),
   array( 'db' => 'father_name', '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数据表:将WHERE,JOIN和GROUP
BY与ssp.class.php一起
使用。

2020-05-17