我正在使用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/

10-09 20:12