Page 1 of 1

Incompatibilidad tDolphin - IA - MySQl

Posted: Mon Feb 10, 2025 9:58 pm
by JoseAlvarez
Saludos amigos.

He utilizado la inteligencia artificial para crear muchas consultas de mariadb y mysql. De verdad es fantástico y no tengo problemas en usarla. es una gran herramienta para todo, y si lo podemos aprovechar, ¿por qué no?

El caso es que me he encontrado que a veces las consultas funcionan perfecto en NAVICAT (podría ser cualquier otro administrador de BD) pero cuando lo llevo a FW+HARBOUR arroja error de sintaxis. Todo se copia tal cual y me aseguro de no tener errores de mi parte. pero nada, sigue arrojando el error 1064.

Revisando pude darme cuenta de algo, si se intenta ejecutar mas de una operación en una sola consulta no funciona. si las separo, funciona.
por ejemplo el DROP TEMPORARY TABLE IF EXIST seguido de otras instrucciones, no sirve. si lo ejecuto primero con un execute y luego el resto de la consulta en otra, si funciona.

el caso es que la IA me proporciona consultas donde usa cosas de mysql que ni sabia que existían, pero me dan lo que necesito. Solo que al llevarlo a harbour, no funciona. asi de simple.

uso tDolphin. ¿alguien tiene idea del porque de esto?

Se que la solución seria trabajarla por partes y/o quitarle esas cosas extras de mysql que usa la IA, pero quedaría en el mismo sitio de antes, y quiero aprovechar la ayuda.

aqui dejo el ejemplo de una consulta, solo para fines orientativos.

Code: Select all | Expand

-- Eliminar la tabla temporal si ya existe
DROP TEMPORARY TABLE IF EXISTS temp_resultados;

-- Crear una tabla temporal para almacenar los resultados intermedios
CREATE TEMPORARY TABLE temp_resultados AS
SELECT 
    C.codigo_cliente, 
    C.razon_social_cliente, 
    M.codigo_medio, 
    M.nombre_medio, 
    D.fecha_pago, 
    D.code_clien, 
    D.numero_recibo, 
    D.doc_pagado, 
    D.monto, 
    D.doc_deleted
FROM 
    c32demo_clientes   AS C,
    c32demo_mediospago AS M,
    c32demo_desglose   AS D 
WHERE 
    C.codigo_cliente = D.code_clien 
    AND M.codigo_medio = D.codigo_medio 
    AND D.fecha_pago BETWEEN '2025-02-06' AND '2025-02-09' 
    AND D.doc_deleted <> '.T.'
ORDER BY 
    D.fecha_pago, 
    D.codigo_medio, 
    D.numero_recibo, 
    D.doc_pagado;

-- Consulta final con subtotales después del grupo de fecha_pago
SELECT fecha_pago, nombre_medio, codigo_medio, numero_recibos, total_doc_pagado, total_monto FROM (
    -- Datos principales
    SELECT 
        fecha_pago,
        nombre_medio, 
        codigo_medio, 
        COUNT(numero_recibo) AS numero_recibos, 
        SUM(doc_pagado) AS total_doc_pagado, 
        SUM(monto) AS total_monto,
        0 AS orden
    FROM temp_resultados
    GROUP BY fecha_pago, codigo_medio, nombre_medio 

    UNION ALL

    -- Filas de subtotales (colocadas después)
    SELECT 
        fecha_pago,
        'SUBTOTAL' AS nombre_medio,
        NULL AS codigo_medio,
        NULL AS numero_recibos,
        NULL AS total_doc_pagado,
        SUM(monto) AS total_monto,
        1 AS orden
    FROM temp_resultados
    GROUP BY fecha_pago
) AS final_query
ORDER BY fecha_pago, orden, codigo_medio, nombre_medio;

Re: Incompatibilidad tDolphin - IA - MySQl

Posted: Tue Feb 11, 2025 10:22 pm
by Antonio Linares
Estimado Jose,

Por lo que tengo entendido no todos los motores de bases de datos soportan la misma sintaxis SQL.

Al pedir una determinada sintaxis para una sentencia SQL especifícale el motor de base de datos a usar.

Re: Incompatibilidad tDolphin - IA - MySQl

Posted: Wed Feb 12, 2025 12:02 am
by JoseAlvarez
Saludos maestro.

Sí, siempre lo hago, le digo que trabajo en local con mariadb y en la nube con mysql. Siempre me dice "Ok, prepararé la consulta para que funcione en ambos"

Lo que si he comprobado por ejemplo es que tDolphin no acepta dos operaciones diferentes, un execute y un query en la misma consulta, por ejemplo un drop, create y select juntos, cosa que funciona perfecto en el generador de querys de navicat o cualquiera parecido.

Re: Incompatibilidad tDolphin - IA - MySQl (Solucionado)

Posted: Thu Feb 13, 2025 8:39 pm
by JoseAlvarez
Amigos, como suele suceder, las soluciones a veces son las más simples.

Cuando se desea hacer una consulta mysql a la IA basta con decirle "Hazla adaptada para el lenguaje HARBOUR"

y listo... así de simple.

Un abrazo.

Les dejo la explicación de la IA:
Harbour es un lenguaje de programación muy potente y versátil, pero tiene algunas limitaciones al ejecutar consultas complejas y comandos avanzados de MySQL. Aquí te menciono algunas de ellas:

Compatibilidad limitada con MySQL: Aunque Harbour puede conectarse a bases de datos MySQL, no soporta todas las funcionalidades avanzadas de MySQL, como ciertas funciones de agregación, subconsultas y operaciones complejas de JOIN.

Rendimiento: Al ejecutar consultas complejas, el rendimiento puede ser inferior en comparación con otros lenguajes y herramientas especializadas en bases de datos.

Documentación y soporte: La documentación y el soporte para el uso de MySQL con Harbour pueden ser limitados, lo que puede dificultar la resolución de problemas y la implementación de soluciones avanzadas.

Actualizaciones y mantenimiento: Harbour no se actualiza tan frecuentemente como otros lenguajes modernos, lo que puede resultar en una menor compatibilidad con las últimas versiones y características de MySQL.

A pesar de estas limitaciones, Harbour sigue siendo una herramienta valiosa para aplicaciones de bases de datos y negocios, especialmente para aquellos familiarizados con el lenguaje Clipper.

Re: Incompatibilidad tDolphin - IA - MySQl

Posted: Thu Feb 13, 2025 11:06 pm
by Vikthor
He leído tu publicación y la duda que tengo es la siguiente:

¿ Cuál fue la diferencia significativa entre la primer consulta que generaba error y la segunda que se ejecutaba de forma correcta ?

Re: Incompatibilidad tDolphin - IA - MySQl (Solucionado)

Posted: Thu Feb 20, 2025 1:53 pm
by Carles
JoseAlvarez wrote: Thu Feb 13, 2025 8:39 pm Amigos, como suele suceder, las soluciones a veces son las más simples.

Cuando se desea hacer una consulta mysql a la IA basta con decirle "Hazla adaptada para el lenguaje HARBOUR"

y listo... así de simple.

Un abrazo.

Les dejo la explicación de la IA:
No os creais todo lo que diga la IA...

C.