Active Record реализация этого SQL? - PullRequest
0 голосов
/ 08 мая 2009

Я использую CodeIgniter. Моя база данных - MySQL 5. Приведенный ниже оператор SQL работает нормально, но я думаю, что он не будет действительно совместим с MSSQL, PG и другими. Мне интересно, возможно ли реализовать оператор с использованием класса Active Record в CI, следовательно, сделать его полностью кросс-базы данных?

Я думаю, что "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

Ответы [ 2 ]

2 голосов
/ 11 мая 2009

Я подозреваю, что вам будет проще и быстрее выполнять ваши манипуляции со строками вне базы данных. В долгосрочной перспективе этот путь будет чреват проблемами обслуживания.

2 голосов
/ 08 мая 2009

Вы определенно должны переосмыслить это да ... Почему во имя всего святого вы злоупотребляете group_concat, чтобы внедрить что-то в HTML из SQL? Что произойдет, если в поле, которое вы объединяете, присутствует символ "

Хорошее эмпирическое правило: Используйте вашу базу данных для хранения Используйте ваш PHP для извлечения данных и преобразования их в HTML, PDF или любой другой тип вывода.

Кроме того, вы можете прочитать об использовании JOINS? Теперь вы выполняете 2 запроса, в которых достаточно одного с несколькими объединениями и хорошо построенного предложения where.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...