在 jquery 数据表中加入查询问题

Posted

技术标签:

【中文标题】在 jquery 数据表中加入查询问题【英文标题】:Join query issue in jquery datatable 【发布时间】:2016-02-19 16:26:51 【问题描述】:

我正在使用带有服务器端处理的 jquery 数据表。只是我试图让join 查询产生输出。

所以我把 columns 数组改成这样:

$aColumns = array (
                   "u.user_id", 
                   "CONCAT(u.first_name, ' ', u.last_name)", 
                   "u.gender", 
                   "CONCAT(a.suburb, ', ', a.zip_code)", 
                   "u.date_registered"
                 );

并像这样更改查询。

$sQuery = "SELECT SQL_CALC_FOUND_ROWS u.user_id 
                    , CONCAT(u.first_name, ' ', u.last_name)
                    , u.gender
                    , CONCAT(a.suburb, ', ', a.zip_code)
                    , u.date_registered
    FROM users u 
    INNER JOIN user_addresses a ON a.user_id = u.user_id ".$sWhere.$sOrder.$sLimit;

然后我可以填充数据表。但它的搜索、过滤和排序不起作用。

当我尝试搜索、过滤或排序时,我可能会遇到这种错误。

“where 子句”中的未知列“u.user_id”

更新 这是我回显$sQuery时的输出

SELECT SQL_CALC_FOUND_ROWS  u.user_id 
                          , CONCAT(u.first_name, ' ', u.last_name)
                          , u.gender
                          , CONCAT(a.suburb, ', ', a.zip_code)
                          , u.date_registered
FROM users u 
INNER JOIN user_addresses a ON a.user_id = u.user_id AND a.address_type = 1  
WHERE (`u.user_id` LIKE '%s%' OR `CONCAT(u.first_name, ' ', u.last_name)` LIKE '%s%' OR `u.gender` LIKE '%s%' OR `CONCAT
(a.suburb, ', ', a.zip_code)` LIKE '%s%' OR `u.date_registered` LIKE '%s%') LIMIT 0, 10 
Unknown column 'u.user_id' in 'where clause'

谁能帮帮我。 谢谢你。

【问题讨论】:

你能回显出$sQuery 变量吗?然后我们将能够看到您的whereorderlimit 变量的值。 @Lock,你能告诉我如何在处理脚本中回显我的查询吗?我只是尝试过这样echo $eQuery; 但我无法获得输出。 在查询后面加上echo $sQuery; exit; 【参考方案1】:

您将列名包含在反引号中,而不仅仅是列名。

例如,您有:

`u.user_id`

它应该在哪里:

u.`user_id`

您需要为 where 子句中的所有值更改此设置。

【讨论】:

谢谢。在我的处理脚本中,我不确定如何处理。因为where 子句是这样动态生成的——if (!empty($aFilteringRules)) $sWhere = " WHERE ".implode(" AND ", $aFilteringRules); else $sWhere = ""; 您必须查看设置 $aFilteringRules 变量的内容并进行更正 您能看看处理脚本中的过滤选择吗? - pastebin.com/mPsXqhaA 这确实是一个设计问题。您给出的脚本假设$aColumns 中的值将仅包括字段名称,而不包括表和字段名称(例如,它需要user_id,而不是b.user_id。您需要重新设计此代码,也许这样$aColumns 正在填充反引号,并且反引号不是由您的代码添加的,例如在 13 上看到的。

以上是关于在 jquery 数据表中加入查询问题的主要内容,如果未能解决你的问题,请参考以下文章

Google App Script - 如何在 JDBC 查询中加入多个数据库

如何在 App Script 中加入两个表并将数据提取到大查询现有表中

如何在 Cloud Firestore 查询中加入多个文档?

如何以正确的方式在 Firebase 查询中加入结果

如何在 SQL Server 中加入两个查询的结果?

从单独的数据库中加入查询