Php 使查询适应JDatabase

Php 使查询适应JDatabase,php,sql,joomla,Php,Sql,Joomla,如何使以下查询适应JDatabase SELECT c.RAZONSOCIAL usu_razonSocial ,c.NIT usu_nit ,c.SEDE usu_sede ,c.EMAIL

如何使以下查询适应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;
这是Joomla 2.5.4

我读过,但我做不到

我试着这样做:

<?php

$query
    ->select($db->quoteName(array('c.RAZONSOCIAL AS 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($db->quoteName('database_2.cargacliente', 'c'))

    ->join('INNER', $db->quoteName('database_2.cargas','a') . ' ON (' . $db->quoteName('a.crg_id') . ' = ' . $db->quoteName('database_2.cargacert.cargas_id') . ') AND (' . $db->quoteName('a.crg_status') . ' = \'Ok\')')

    ->join('INNER', $db->quoteName('database_2.certificados','b') . ' ON (' . $db->quoteName('b.ctf_sede') . ' = ' . $db->quoteName('database_2.cargacliente.SEDE') . ') AND (' . $db->quoteName('b.ctf_nit') . ' = NIT)')

    ->join('LEFT', $db->quoteName('joomla_database.bml_users', 'u') . ' ON (' . $db->quoteName('database_2.usuario.usu_id') . ' = ' . $db->quoteName('joomla_database.bml_users.user_id') . ')')

    ->group(array('c.NIT', 'c.SEDE'))
    ->order(array('database_2.usuario.usu_razonSocial', 'database_2.usuario.usu_nit', 'database_2.usuario.usu_sede'));

?>

如果没有合适的环境,要说问题出在哪里有点困难。 我建议对驱动程序进行调试,看看它在哪里失败。 当然,您也可以通过“setQuery”方法直接进行查询。不过,它只能与MySQL兼容


但是,再一次,请更新您的Joomla!尽快更新至最新版本。

更改如下:

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 `biochemical`.`cargacliente` AS `c` INNER JOIN `biochemical`.`cargas` AS `a` ON (`a`.`crg_id` = `biochemical`.`cargacert`.`cargas_id`) AND (`a`.`crg_status` = 'Ok') INNER JOIN `biochemical`.`certificados` AS `b` ON (`b`.`ctf_sede` = `biochemical`.`cargacliente`.`SEDE`) AND (`b`.`ctf_nit` = NIT) LEFT JOIN `biochemical_bml`.`bml_users` AS `u` ON (`biochemical`.`usuario`.`usu_id` = `biochemical_bml`.`bml_users`.`user_id`) GROUP BY c.NIT,c.SEDE ORDER BY biochemical.usuario.usu_razonSocial,biochemical.usuario.usu_nit,biochemical.usuario.usu_sede
$query
    ->select(array('c.RAZONSOCIAL AS usu_razonSocial', 'c.NIT AS usu_nit', 'c.SEDE AS usu_sede', 'c.EMAIL AS usu_email', 'IF(IFNULL(u.block, 1) = 0, \'Activo\', \'Inactivo\') AS usu_estado', 'COUNT(b.ctf_id) AS nroCertificados'))

    ->from($db->quoteName('database_2.cargacliente', 'c'))

    ->join('INNER', $db->quoteName('database_2.cargas','a') . ' ON (' . $db->quoteName('a.crg_id') . ' = ' . $db->quoteName('c.cargas_id') . ') AND (' . $db->quoteName('a.crg_status') . ' = \'Ok\')')

    ->join('INNER', $db->quoteName('database_2.certificados','b') . ' ON (' . $db->quoteName('b.ctf_sede') . ' = ' . $db->quoteName('c.SEDE') . ') AND (' . $db->quoteName('b.ctf_nit') . ' = c.NIT)')

    ->join('LEFT', $db->quoteName('joomla_database.bml_users', 'u') . ' ON (' . $db->quoteName('c.user_id') . ' = ' . $db->quoteName('u.id') . ')')

    ->group(array('c.NIT', 'c.SEDE'))
    ->order(array('usu_razonSocial', 'usu_nit', 'usu_sede'));
  • 删除SELECT语句中的第一个$db->quoteName()
  • 从表中修改别名
  • 左连接修改
  • 最终代码如下所示:

    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 `biochemical`.`cargacliente` AS `c` INNER JOIN `biochemical`.`cargas` AS `a` ON (`a`.`crg_id` = `biochemical`.`cargacert`.`cargas_id`) AND (`a`.`crg_status` = 'Ok') INNER JOIN `biochemical`.`certificados` AS `b` ON (`b`.`ctf_sede` = `biochemical`.`cargacliente`.`SEDE`) AND (`b`.`ctf_nit` = NIT) LEFT JOIN `biochemical_bml`.`bml_users` AS `u` ON (`biochemical`.`usuario`.`usu_id` = `biochemical_bml`.`bml_users`.`user_id`) GROUP BY c.NIT,c.SEDE ORDER BY biochemical.usuario.usu_razonSocial,biochemical.usuario.usu_nit,biochemical.usuario.usu_sede
    
    $query
        ->select(array('c.RAZONSOCIAL AS usu_razonSocial', 'c.NIT AS usu_nit', 'c.SEDE AS usu_sede', 'c.EMAIL AS usu_email', 'IF(IFNULL(u.block, 1) = 0, \'Activo\', \'Inactivo\') AS usu_estado', 'COUNT(b.ctf_id) AS nroCertificados'))
    
        ->from($db->quoteName('database_2.cargacliente', 'c'))
    
        ->join('INNER', $db->quoteName('database_2.cargas','a') . ' ON (' . $db->quoteName('a.crg_id') . ' = ' . $db->quoteName('c.cargas_id') . ') AND (' . $db->quoteName('a.crg_status') . ' = \'Ok\')')
    
        ->join('INNER', $db->quoteName('database_2.certificados','b') . ' ON (' . $db->quoteName('b.ctf_sede') . ' = ' . $db->quoteName('c.SEDE') . ') AND (' . $db->quoteName('b.ctf_nit') . ' = c.NIT)')
    
        ->join('LEFT', $db->quoteName('joomla_database.bml_users', 'u') . ' ON (' . $db->quoteName('c.user_id') . ' = ' . $db->quoteName('u.id') . ')')
    
        ->group(array('c.NIT', 'c.SEDE'))
        ->order(array('usu_razonSocial', 'usu_nit', 'usu_sede'));
    

    在读了那篇文章之后,你尝试了什么?向我们展示你首先尝试了什么,然后我们可以帮助调试你的代码。thicks和LIMIT是由Joomla函数添加的。