如何用ssp.class.php连接两个表?

时间:2015-11-07 11:32:02

标签: php jquery datatables

作为项目的一部分,我有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列。

有人可以帮忙吗?

2 个答案:

答案 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

LINKS

有关详细信息,请参阅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