Php 数据表-嵌套选择';标准普尔;加入

Php 数据表-嵌套选择';标准普尔;加入,php,mysql,datatables,Php,Mysql,Datatables,我正在使用datatables.net,但我正在努力解决如何让嵌套查询和联接工作。我似乎找不到任何例子。我可以让它使用如下方式显示简单查询(对于不同的表): 但现在,我有了这个问题,我看不到任何东西可以为我指明正确的方向: SELECT vp.id, vp.post_title, ( SELECT vpm.meta_value FROM

我正在使用datatables.net,但我正在努力解决如何让嵌套查询和联接工作。我似乎找不到任何例子。我可以让它使用如下方式显示简单查询(对于不同的表):

但现在,我有了这个问题,我看不到任何东西可以为我指明正确的方向:

    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

我将尝试以这种方式创建您的查询。因为我不知道数据库表是如何设置的,所以除了编辑一些语法外,我无法为您提供更多帮助

SELECT 
    vp.id,
    vp.post_title,
    bonus.meta_value,
    deposit.meta_value,
    wt.name,
    vp.post_content
FROM
    vhyky_posts vp,
    vhyky_term_relationships wtr,
    vhyky_term_taxonomy wtt,
    vhyky_terms wt
LEFT JOIN
    (SELECT 
        vpm.post_id, vpm.meta_value
    FROM
        vhyky_postmeta vpm
    WHERE
        vpm.meta_key = 'cs_cause_goal_amount'
) AS bonus ON bonus.post_id = vp.id
LEFT JOIN
    (SELECT 
        vpm.post_id, vpm.meta_value
    FROM
        vhyky_postmeta vpm
    WHERE
        vpm.meta_key = 'cs_cause_raised_amount'
) AS deposit ON deposit.post_id = vp.id
WHERE
    vp.post_type = 'cs_cause'
        AND vp.post_status = 'publish'
        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

我将尝试以这种方式创建您的查询。因为我不知道数据库表是如何设置的,所以除了编辑一些语法外,我无法为您提供更多帮助

SELECT 
    vp.id,
    vp.post_title,
    bonus.meta_value,
    deposit.meta_value,
    wt.name,
    vp.post_content
FROM
    vhyky_posts vp,
    vhyky_term_relationships wtr,
    vhyky_term_taxonomy wtt,
    vhyky_terms wt
LEFT JOIN
    (SELECT 
        vpm.post_id, vpm.meta_value
    FROM
        vhyky_postmeta vpm
    WHERE
        vpm.meta_key = 'cs_cause_goal_amount'
) AS bonus ON bonus.post_id = vp.id
LEFT JOIN
    (SELECT 
        vpm.post_id, vpm.meta_value
    FROM
        vhyky_postmeta vpm
    WHERE
        vpm.meta_key = 'cs_cause_raised_amount'
) AS deposit ON deposit.post_id = vp.id
WHERE
    vp.post_type = 'cs_cause'
        AND vp.post_status = 'publish'
        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进行查询会更容易(特别是在需要过滤器的情况下)。

我会创建一个类似视图的表(类似SQL视图,而不是MVC视图):将所有需要的列组装到一个新表中。每次用户要求显示数据时,您都可以使用一个PHP脚本清空和填充表。然后,使用数据表进行查询会更容易(特别是在需要过滤器的情况下)