MySQL查询在另一个查询中

时间:2011-09-21 07:27:12

标签: php jquery mysql jquery-plugins datatables

我正在使用名为DataTables的jQuery插件,(server-side processing)。问题是它限制了您构建查询的方式。默认方法如下所示。

$sQuery = "
    SELECT SQL_CALC_FOUND_ROWS ".str_replace(" , ", " ", implode(", ", $aColumns))."
    FROM   $sTable
    $sWhere
    $sOrder
    $sLimit
";

是否可以使用我自己的复杂查询(可能包含where子句,join等),同时仍然使用此约束?我需要能够根据情况“弹出”不同的查询,而不必每次都重写整个事物。

我想只有一个文件处理多个DataTables的请求,只改变SQL。如果不清楚请发表评论。

2 个答案:

答案 0 :(得分:0)

我想也许没有SQL解决方案。我可能需要创建一个函数来根据我的查询修改整个事物。

答案 1 :(得分:0)

好吧,你的脚本需要返回一个json记录列表,同时考虑到http请求参数:

  • 过滤器(sSearch)
  • 排序(iSortCol_ *)
  • 当前页面(iDisplayStart& iDisplayLength)

在应用过滤器后,还需要返回总记录数。

如何在服务器端生成该列表由您自己决定,您可以根据需要编写复杂的查询。

允许更复杂的查询同时仍然最小化样板代码的一种方法是在类中包装示例的功能,但是将select和count查询提取到方法中。基类会像您的示例一样返回查询,但您可以在子类中重写它,并根据需要返回复杂的查询。但是在生成它们时需要注意过滤,排序和页面参数。