我正在使用datatables.net,但正在努力解决如何获取嵌套查询和联接的工作。我似乎找不到任何例子。我可以使用类似的东西来显示简单的查询(对于另一个表):
// DB table to use
$table = 'support_msgs';
// 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' => 'user_id', 'dt' => 1 ),
array( 'db' => 'title', 'dt' => 2 ),
array( 'db' => 'msg', 'dt' => 3 ),
array( 'db' => 'date', 'dt' => 4 )
);
// SQL server connection information
$sql_details = array(
'user' => 'user',
'pass' => 'pass',
'db' => 'db',
'host' => 'localhost'
);
require( 'ssp.class.php' );
// echo json_encode(
// SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
// );
echo json_encode(
SSP::complex( $_GET, $sql_details, $table, $primaryKey, $columns )
);
但是现在,我有了这个查询,但看不到任何指向我正确方向的东西:
SELECT
vp.id,
vp.post_title,
(
SELECT
vpm.meta_value
FROM
vhyky_postmeta vpm
WHERE vp.id = vpm.post_id
AND vpm.meta_key = 'cs_cause_goal_amount'
) AS Bonus,
(
SELECT
vpm.meta_value
FROM
vhyky_postmeta vpm
WHERE vp.id = vpm.post_id
AND vpm.meta_key = 'cs_cause_raised_amount'
) AS Deposit,
wt.name,
vp.post_content
FROM
vhyky_posts vp,
vhyky_postmeta vpm,
vhyky_term_relationships wtr,
vhyky_term_taxonomy wtt,
vhyky_terms wt
WHERE vp.post_type = 'cs_cause'
AND vp.post_status = 'publish'
AND vp.id = vpm.post_id
AND vp.id = wtr.object_id
AND wtr.term_taxonomy_id = wtt.term_taxonomy_id
AND wt.term_id = wtt.term_id
AND wtt.term_id = '114'
group by vp.id
最佳答案
我将创建一个类似于视图的表(例如SQL视图,而不是MVC视图):在新表中组装所有需要的列。每当用户要求显示数据时,您都可以使用PHP脚本清空并填充表。然后,使用DataTables进行查询将更加容易(尤其是在需要过滤器的情况下)。
关于php - 数据表-嵌套的SELECT和联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40389550/