此SQL的Active Record实现?

我正在使用CodeIgniter。 我的数据库是MySQL 5.下面的SQL语句工作正常,但我认为它不会真正与MSSQL,PG等人兼容。 我想知道是否可以使用CI中的Active Record类来实现语句,从而使它完全跨越数据库?

我认为“GROUP_CONCAT”是我会跌倒的地方......

编辑 - 在CodeIgniter板上找到

“然而,应该指出的是,CONCAT是特定于数据库的,它实际上并不是活动记录库的一部分,尽管我确信大部分数据库引擎都支持它。”

我可能不得不重新考虑这一点,因为它看起来不可能使用纯粹的活动记录。

SELECT system.system_id,
       system.uuid,
       system.hostname,
       system.man_description,
       system.man_ip_address,
       system.os_short_name,
       system.os_full_name,
       system.man_type,
       system.man_icon,
       GROUP_CONCAT(DISTINCT '<a href="', oa_group.group_id, '">', oa_group.group_description, '</a>' ORDER BY group_description SEPARATOR ', ') as tag
FROM system,
       oa_group,
       oa_group_sys
WHERE system.system_id IN (
               SELECT system.system_id
               FROM system,
                       oa_group_sys,
                       oa_group,
                       oa_group_user
               WHERE system.man_status = 'production' AND
                       system.system_id = oa_group_sys.system_id AND
                       oa_group_sys.group_id = oa_group.group_id AND
                       oa_group.group_id = oa_group_user.group_id AND
                       oa_group_user.user_id = '1' ) AND
       system.system_id = oa_group_sys.system_id AND
       oa_group_sys.group_id = oa_group.group_id
GROUP BY system.system_id

你肯定不得不重新思考这是...为什么在所有圣洁的名字你滥用group_concat从SQL内存的东西到HTML? 如果在字段中存在一个“字符串”,会发生什么情况?

良好的经验法则是:使用数据库进行存储使用PHP获取数据并将其转换为HTML或PDF或任何类型的输出。

另外,您可能想了解使用JOINS? 你现在正在运行2个查询,其中一个有一些连接和一个精心构建的where子句就足够了。


我的怀疑是,你会发现在数据库之外进行字符串操作会更快更干净。 从长远来看,这条道路将充满可维护性问题。

链接地址: http://www.djcxy.com/p/43767.html

上一篇: Active Record implementation of this SQL?

下一篇: Replacing elements with lxml.html