我正在使用 CodeIgniter。我的数据库是 MySQL 5。下面的 SQL 语句工作正常,但我认为它不会真正与 MSSQL、PG 等兼容。我想知道是否可以使用 CI 中的 Active Record 类来实现该语句,从而使其完全跨数据库?
我认为“GROUP_CONCAT”是我会摔倒的地方......
编辑 - 在 CodeIgniter 板上找到
“然而,应该注意的是,CONCAT 是特定于数据库的。它实际上并不是活动记录库的一部分,尽管我确信它被大多数(如果不是所有)数据库引擎支持。”
我可能不得不重新考虑这一点,因为使用纯 Active Record 似乎是不可能的。
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