Php 如何将命名内部联接查询转换为代码点火器语法?

Php 如何将命名内部联接查询转换为代码点火器语法?,php,sql,sql-server,codeigniter,Php,Sql,Sql Server,Codeigniter,我有以下疑问 $query = $this->db->query( 'SELECT ii.json FROM inventory ii INNER JOIN ( SELECT json, MAX(id) as MAX_ID FROM inventory GROUP BY business_unit ) group_json ON i

我有以下疑问

$query = $this->db->query(
        'SELECT ii.json

        FROM inventory ii
        INNER JOIN
        (
            SELECT json, MAX(id) as MAX_ID
            FROM inventory
            GROUP BY business_unit
        ) group_json ON ii.id = group_json.MAX_ID

        INNER JOIN business_units 
        ON ii.business_unit = business_units.id'
    );

    return $query->result_array();
我们不得不迁移到MSSQL测试服务器,不幸的是语法不正确。为了避免将来出现这种情况,我想将其转换为CodeIgniter类型的查询

有人能告诉我这个查询在CodeIgniter中是什么样子的吗?我已经尝试了一些方法,但我还没有接近

SELECT ii.json
FROM inventory ii
INNER JOIN
(
    SELECT json, MAX(id) as MAX_ID
    FROM inventory
    GROUP BY business_unit, json    --<-- "json" needs to be in GROUP BY
) group_json                           -- Since it is in SELECT but not
ON ii.id = group_json.MAX_ID           -- contained in any aggregate function
INNER JOIN business_units 
ON ii.business_unit = business_units.id

如果在SELECT中使用任何聚合函数MAX、MIN、AVG、SUM、COUNT,则该SELECT中任何聚合函数中未包含的任何其他列都必须进入查询的GROUP BY子句。

能否将其设为存储过程?语法是否正确?它看起来应该可以在MS SQL Server、MySQL和Oracle上正常工作。我已经对它进行了测试,分组后我们发现了一个错误。不过我想看看CodeIgniter SQL的等效版本。致命错误:在非对象上调用成员函数result\u数组您的GROUPBY子句中也有业务单元???你确定要按此列的结果分组吗?我不是PHP的家伙,看看这里,也许这会有帮助,至少你的分组错误已经消除了,现在你遇到了一些与PHP相关的错误。