Bienvenido, Invitado
Nombre de Usuario: Contraseña: Recordarme
Extensiones(Componentes, Módulos, Plugins) 2.5

TEMA: Adaptar consulta SQL a JDatabase

Adaptar consulta SQL a JDatabase 4 años 11 meses antes #3273

  • merlyn333
  • Avatar de merlyn333
  • Fuera de línea
  • Fresh Boarder
  • Mensajes: 14
  • Karma: 0
Como puedo adaptar la siguiente consulta a JDatabase?
SELECT
     c.RAZONSOCIAL                                      usu_razonSocial
    ,c.NIT                                              usu_nit
    ,c.SEDE                                             usu_sede
    ,c.EMAIL                                            usu_email
    ,IF(IFNULL(u.block, 1) = 0, 'Activo', 'Inactivo')   usu_estado
    ,COUNT(ct.ctf_id)                                   nroCertificados
FROM
    cargacliente c

    INNER JOIN 
    cargas 
    ON (crg_id = cargas_id) 
        AND (crg_status = 'Ok')

    INNER JOIN 
    certificados ct 
    ON (ctf_sede = SEDE)
        AND (ctf_nit = NIT)

    LEFT JOIN 
    database_1.bml_users u 
    ON (id = user_id)
GROUP BY
     c.NIT
    ,c.SEDE
ORDER BY
     usu_razonSocial
    ,usu_nit
    ,usu_sede;
Ésto es Joomla 2.5.4.

He leído ésta publicación, pero no lo he logrado.

Intenté hacerlo de la siguiente manera:
<?php

$query->select($db->quoteName(array('c.RAZONSOCIAL usu_razonSocial', 'c.NIT usu_nit', 'c.SEDE usu_sede', 'c.EMAIL usu_email', 'IF(IFNULL(u.block, 1) = 0, \'Activo\', \'Inactivo\') usu_estado', 'COUNT(ct.ctf_id) nroCertificados')));
$query->from($db->quoteName('database_2.cargacliente', 'c'));
$query->join('INNER', $db->quoteName('database_2.cargas') . ' ON (' . $db->quoteName('database_2.cargas.crg_id') . ' = ' . $db->quoteName('database_2.cargacert.cargas_id') . ') AND (' . $db->quoteName('database_2.cargas.crg_status') . ' = \'Ok\')');
$query->join('INNER', $db->quoteName('database_2.certificados') . ' ON (' . $db->quoteName('database_2.certificados.ctf_sede') . ' = ' . $db->quoteName('database_2.cargacliente.SEDE') . ') AND (' . $db->quoteName('database_2.certificados.ctf_nit') . ' = NIT)');
$query->join('LEFT', $db->quoteName('database_1.bml_users', 'u') . ' ON (' . $db->quoteName('database_2.usuario.usu_id') . ' = ' . $db->quoteName('database_1.bml_users.user_id') . ')');
$query->group('c.NIT, c.SEDE');
$query->order($db->quoteName(array('database_2.usuario.usu_razonSocial', 'database_2.usuario.usu_nit', 'database_2.usuario.usu_sede')));

El error que se muestra es el siguiente:
500 - Ha ocurrido un error.
Unknown column 'c.RAZONSOCIAL usu_razonSocial' in 'field list' SQL=SELECT `c`.`RAZONSOCIAL usu_razonSocial`,`c`.`NIT usu_nit`,`c`.`SEDE usu_sede`,`c`.`EMAIL usu_email`,`IF(IFNULL(u`.`block, 1) = 0, 'Activo', 'Inactivo') usu_estado`,`COUNT(ct`.`ctf_id) nroCertificados` FROM `database_2`.`cargacliente` AS `c` INNER JOIN `database_2`.`cargas` ON (`database_2`.`cargas`.`crg_id` = `database_2`.`cargacert`.`cargas_id`) AND (`database_2`.`cargas`.`crg_status` = 'Ok') INNER JOIN `database_2`.`certificados` ON (`database_2`.`certificados`.`ctf_sede` = `database_2`.`cargacliente`.`SEDE`) AND (`database_2`.`certificados`.`ctf_nit` = NIT) LEFT JOIN `database_1`.`bml_users` AS `u` ON (`database_2`.`usuario`.`usu_id` = `database_1`.`bml_users`.`user_id`) GROUP BY c.NIT, c.SEDE ORDER BY `database_2`.`usuario`.`usu_razonSocial`,`database_2`.`usuario`.`usu_nit`,`database_2`.`usuario`.`usu_sede`
Unknown column 'c.RAZONSOCIAL usu_razonSocial' in 'field list' SQL=SELECT `c`.`RAZONSOCIAL usu_razonSocial`,`c`.`NIT usu_nit`,`c`.`SEDE usu_sede`,`c`.`EMAIL usu_email`,`IF(IFNULL(u`.`block, 1) = 0, 'Activo', 'Inactivo') usu_estado`,`COUNT(ct`.`ctf_id) nroCertificados` FROM `database_2`.`cargacliente` AS `c` INNER JOIN `database_2`.`cargas` ON (`database_2`.`cargas`.`crg_id` = `database_2`.`cargacert`.`cargas_id`) AND (`database_2`.`cargas`.`crg_status` = 'Ok') INNER JOIN `database_2`.`certificados` ON (`database_2`.`certificados`.`ctf_sede` = `database_2`.`cargacliente`.`SEDE`) AND (`database_2`.`certificados`.`ctf_nit` = NIT) LEFT JOIN `database_1`.`bml_users` AS `u` ON (`database_2`.`usuario`.`usu_id` = `database_1`.`bml_users`.`user_id`) GROUP BY c.NIT, c.SEDE ORDER BY `database_2`.`usuario`.`usu_razonSocial`,`database_2`.`usuario`.`usu_nit`,`database_2`.`usuario`.`usu_sede` LIMIT 0, 20
Unknown column 'c.RAZONSOCIAL usu_razonSocial' in 'field list' SQL=SELECT `c`.`RAZONSOCIAL usu_razonSocial`,`c`.`NIT usu_nit`,`c`.`SEDE usu_sede`,`c`.`EMAIL usu_email`,`IF(IFNULL(u`.`block, 1) = 0, 'Activo', 'Inactivo') usu_estado`,`COUNT(ct`.`ctf_id) nroCertificados` FROM `database_2`.`cargacliente` AS `c` INNER JOIN `database_2`.`cargas` ON (`database_2`.`cargas`.`crg_id` = `database_2`.`cargacert`.`cargas_id`) AND (`database_2`.`cargas`.`crg_status` = 'Ok') INNER JOIN `database_2`.`certificados` ON (`database_2`.`certificados`.`ctf_sede` = `database_2`.`cargacliente`.`SEDE`) AND (`database_2`.`certificados`.`ctf_nit` = NIT) LEFT JOIN `database_1`.`bml_users` AS `u` ON (`database_2`.`usuario`.`usu_id` = `database_1`.`bml_users`.`user_id`) GROUP BY c.NIT, c.SEDE ORDER BY `database_2`.`usuario`.`usu_razonSocial`,`database_2`.`usuario`.`usu_nit`,`database_2`.`usuario`.`usu_sede`
Julian Moreno
El administrador ha desactivado la escritura pública.