Visualizzazione post con etichetta MySql. Mostra tutti i post
Visualizzazione post con etichetta MySql. Mostra tutti i post

lunedì 28 marzo 2022

Cancellazione (o Update) di record di una tabella in join con un'altra in MySql

DELETE T1 
FROM T1
        LEFT JOIN
    T2 ON T1.key = T2.key 
WHERE
    T2.key IS NULL


Una variante per l'update ha questa sintassi
UPDATE  T1 
        LEFT JOIN
    T2 ON T1.key = T2.key 
SET T1.campo=T2.campo
WHERE
    T2.key IS NULL

Questa variante permette di utilizzare la tabella T1 all'interno dell'eventuale subquery T2

esempio:
UPDATE T1 INNER JOIN
(SELECT CAMPO FROM T1 WHERE T1.CONDIZIONE ) T2 ON T1.KEY=T2.KEY
SET T1.CAMPO=T2.CAMPO
WHERE T1.CONDIZIONE

Thanks Elson Ferhati 

martedì 29 ottobre 2013

Sigla++ e Mysql

Dalla versione 4.12 Sigla crea due tabelle (SIGLIC e LICLOG) con campi Timestamp.

Il driver ODBC di Mysql gestisce correttamente questo campo solo dalla versione 3.51.28.

I driver antecedenti provocano un errore nella creazione della tabella.

martedì 8 maggio 2012

Ricalcolo saldi contabili ( Tasalsot )

La seguente query ricrea TASALSOT ( che quindi deve essere svuotato prima ).
La query è per SqlServer
Per gli altri db basta spostituire il funzione ISNULL con VALUE,NVL,IFNULL a seconda del db


INSERT INTO TASALSOT
SELECT CODICE,PIACON.SOTTOCONTO,
       ISNULL(LIRE.DARE,0) DARE,
       ISNULL(LIRE.AVERE,0) AVERE,
       ISNULL(LIRE.DAREINIT,0) DAREINIT,
       ISNULL(LIRE.AVEREINIT,0) AVEREINIT,
       ISNULL(LIRE.EDARE,0) EDARE,
       ISNULL(LIRE.EAVERE,0) EAVERE,
       ISNULL(LIRE.EDAREINIT,0) EDAREINIT,
       ISNULL(LIRE.EAVEREINIT,0) EAVEREINIT,
       DATULTMOV,
       NUMULTMOV
 FROM PIACON INNER JOIN ESC ON 1=1
LEFT OUTER JOIN (SELECT ESECOMPET,SOTTOCONTO,
                        SUM(CASE WHEN SEGNO='D' THEN IMPORTO ELSE 0 END) DARE,
                        SUM(CASE WHEN SEGNO='A' THEN IMPORTO ELSE 0 END) AVERE,
                        SUM(CASE WHEN SEGNO='D' AND TIPOCAUSAL='A' THEN IMPORTO ELSE 0 END) DAREINIT,
                        SUM(CASE WHEN SEGNO='A' AND TIPOCAUSAL='A' THEN IMPORTO ELSE 0 END) AVEREINIT,
                        SUM(CASE WHEN SEGNO='D' THEN EIMPORTO ELSE 0 END) EDARE,
                        SUM(CASE WHEN SEGNO='A' THEN EIMPORTO ELSE 0 END) EAVERE,
                        SUM(CASE WHEN SEGNO='D' AND TIPOCAUSAL='A' THEN EIMPORTO ELSE 0 END) EDAREINIT,
                        SUM(CASE WHEN SEGNO='A' AND TIPOCAUSAL='A' THEN EIMPORTO ELSE 0 END) EAVEREINIT,
                        MAX(DATAREG) DATULTMOV,
                        MAX(NUMERO) NUMULTMOV
                 FROM MOVCO 
                 WHERE SOSPESO_SN='N'
                 AND TEMPORA_SN='N'
                 AND SIMULAZ_SN='N'
                 AND SOLOANA_SN<>'S'
                 GROUP BY ESECOMPET,SOTTOCONTO) LIRE ON ESC.CODICE=LIRE.ESECOMPET AND PIACON.SOTTOCONTO=LIRE.SOTTOCONTO                 
                 ORDER BY ESC.CODICE,PIACON.SOTTOCONTO

mercoledì 8 febbraio 2012

Sigla non supporta Mysql 5.5

Mysql 5.5 non è supportato alla data odierna ( 08/02/2012 ) da Sigla++.

In fase di creazione di una tabella su Mysql, Sigla inserisce al termine dello statement SQL, la stringa TYPE=InnoDb

In MySql 5.5 tale opzione è stata sostituita con l'opzione ENGINE=InnoDb

Quindi in fase di creazione delle tabelle, Sigla si schianta.

giovedì 8 settembre 2011

MySql e Sigla++

Dalla versione di MySql 5.1.37 ( o giù di li ), Sigla funziona ma alcune interrogazioni non restituiscono dati.

Per esempio le query del tipo :
SELECT * FROM MOVCO WHERE SOTTOCONTO >= 'C0001     ' AND SOTTOCONTO <= 'C0001     ' 
( visualizzazione partitario ) non restituisce nessun valore.

Al contrario una query del tipo :
SELECT * FROM MOVCO WHERE SOTTOCONTO = 'C0001     ' 
restituisce correttamente i dati

Per sistemare il problema è necessario abilitare il parametro PAD_CHAR_TO_FULL_LENGTH con l'istruzione :
SET sql_mode = 'PAD_CHAR_TO_FULL_LENGTH';
o inserendolo nel file My.ini a mano o attraverso il MySql Administrator

Testato con Mysql 5.5.15 64 bit su Windows 7


Thanks Michele Vivaldi