Eroare MYSQL Coloană necunoscută în ‘having clause’ (Programare, Mysql, Sql)

țeavă Gajardo a intrebat.
a intrebat.

Am nevoie de ultima înregistrare pentru ultima dată, am următoarea interogare

SELECT creditos.NombreCliente,
creditos.Contrato, 
creditos.Rut, 
creditos.lIdtplCabezaCotiza, 
creditos.FechaPagare, 
creditos.FechaCurse, 
creditos.FechaVcto1, 
creditos.FechaVcto2, 
creditos.FormaPago, 
creditos.EstadoMandato,
REPLACE(CuentaCorriente,',','.') as CuentaCorriente , 
creditos.Sucursal, 
creditos.cFyI, 
creditos.FechaUltimoPago, 
estado_creditos_banco.`Fecha Activación` AS FechaActivacion, estado_creditos_banco.`Detalle de Rechazo` AS DetalleRechazo, MAX(estado_creditos_banco.`Fecha Recepción CCA`), estado_activos_banco.Observaciones, estado_creditos_banco.`Estado General` AS EstadoActivacion, 
creditos.EmailCliente,
REPLACE(creditos.TelefonosCliente,',','-') as Telefono  
FROM creditos 
LEFT JOIN estado_creditos_banco ON estado_creditos_banco.Identificador = creditos.lIdtplCabezaCotiza 
LEFT JOIN estado_activos_banco ON estado_activos_banco.`# Cotiz` = creditos.lIdtplCabezaCotiza 
WHERE `creditos`.`Estado` = "CURSADA" 
AND 1=1  
GROUP BY Identificador 
HAVING estado_creditos_banco.`Fecha Recepción CCA` = MAX(estado_creditos_banco.`Fecha Recepción CCA`) 
LIMIT 0,300

îmi aruncă următoarea eroare

[Err] 1054 – Coloană necunoscută ‘estado_creditos_banco.Fecha Recepción CCA’ în ‘having clause’

vă rog să mă ajutați

Comentarii

  • Formatarea codului dvs. pentru a fi lizibil pentru oameni vă va ajuta, ca om, să îl citiți. A fi capabil să citești și să înțelegi în mod semnificativ codul este un pas important pentru a-l corecta. –  > Por David.
  • Sunteți sigur că câmpul dvs. nu este Fecha Activación în loc de Fecha Recepción CCA ? Rețineți că nu cred că utilizarea caracterelor non ASCII este o idee bună în numele tabelelor –  > Por Serty Oan.
  • în mod clar nu este o idee bună, dar problema este cu propoziția pe care o are, nu cu formatul câmpului –  > Por pipe Gajardo.
2 răspunsuri
DevJava

Schimbați închiderea having astfel :
HAVING FechaRecep = MAX(estado_creditos_banco.Fecha )
astfel încât interogarea dvs. ar trebui să arate ca :

SELECT creditos.NombreCliente, creditos.Contrato, creditos.Rut, 
  creditos.lIdtplCabezaCotiza, creditos.FechaPagare, creditos.FechaCurse,
  creditos.FechaVcto1, creditos.FechaVcto2, creditos.FormaPago, creditos.EstadoMandato,
  REPLACE(CuentaCorriente,',','.') as CuentaCorriente , creditos.Sucursal, creditos.cFyI, 
  creditos.FechaUltimoPago, estado_creditos_banco.Fecha Activación AS FechaActivacion,
  estado_creditos_banco.Detalle de Rechazo AS DetalleRechazo, 
  MAX(estado_creditos_banco.Fecha) as maxFecha, 
   estado_activos_banco.Observaciones, 
  estado_creditos_banco.Estado General AS EstadoActivacion, creditos.EmailCliente,
  REPLACE(creditos.TelefonosCliente,',','-') as Telefono,
  MAX(estado_creditos_banco.`Fecha Recepción CCA`) as FechaRecep 

  FROM creditos 

    LEFT JOIN estado_creditos_banco 
       ON estado_creditos_banco.Identificador = creditos.lIdtplCabezaCotiza 
    LEFT JOIN estado_activos_banco 
        ON estado_activos_banco.# Cotiz = creditos.lIdtplCabezaCotiza 

  WHERE creditos.Estado = "CURSADA" 
        AND 1=1 GROUP BY Identificador 

  HAVING FechaRecep = maxFecha

  LIMIT 0,300

Comentarii

  • nu funcționează având, deoarece câmpul DateRecep nu există în tabel, am nevoie să obțin înregistrarea datei maxime de Fecha Recepción CCA –  > Por pipe Gajardo.
  • Cred că vorbiți despre FechaRecep și nu despre DateRecep pentru că nu văd această variabilă aici. mi-am schimbat răspunsul ! –  > Por DevJava.
  • încă mai am eroarea [Err] 1054 – Coloană necunoscută ‘estado_creditos_banco.Fecha’ în ‘having clause’ – –  > Por țeavă Gajardo.
pipe Gajardo

în cele din urmă am găsit soluția, redenumesc variabila date și o schimb în propoziția having.

SELECT
    creditos.NombreCliente,
    creditos.Contrato,
    creditos.Rut,
    creditos.lIdtplCabezaCotiza,
    creditos.FechaPagare,
    creditos.FechaCurse,
    creditos.FechaVcto1,
    creditos.FechaVcto2,
    creditos.FormaPago,
    creditos.EstadoMandato,
    REPLACE (CuentaCorriente, ',', '.') AS CuentaCorriente,
    creditos.Sucursal,
    creditos.cFyI,
    creditos.FechaUltimoPago,
    estado_creditos_banco.`Fecha Activación` AS FechaActivacion,
    estado_creditos_banco.`Detalle de Rechazo` AS DetalleRechazo,
    MAX(
        estado_creditos_banco.`Fecha Recepción CCA`
    ) as fecha,
    estado_activos_banco.Observaciones,
    estado_creditos_banco.`Estado General` AS EstadoActivacion,
    creditos.EmailCliente,
    REPLACE (
        creditos.TelefonosCliente,
        ',',
        '-'
    ) AS Telefono
FROM
    creditos
LEFT JOIN estado_creditos_banco ON estado_creditos_banco.Identificador = creditos.lIdtplCabezaCotiza
LEFT JOIN estado_activos_banco ON estado_activos_banco.`# Cotiz` = creditos.lIdtplCabezaCotiza
WHERE
    `creditos`.`Estado` = "CURSADA"
AND 1 = 1
GROUP BY
    Identificador
HAVING
    fecha = MAX(
        estado_creditos_banco.`Fecha Recepción CCA`
    )
LIMIT 0,
 300

Tags:,