CREATE DATABASE car; USE car; CREATE TABLE vendite ( ID int(10) unsigned NOT NULL auto_increment, ID_Clienti mediumint(8) unsigned default '0', ID_DettaglioAcquisti int(10) unsigned default '0', ID_CodiciMerciAppoggio varchar(5) default NULL, ID_AliquoteIva tinyint(3) unsigned default '0', ID_FattureVendita mediumint(8) unsigned default '0', ID_UnitaMisura tinyint(3) unsigned default NULL, Numero_Colli smallint(5) unsigned default '0', Peso_Lordo float(8,1) default '0.0', Tara_Unitaria float(5,2) default '0.00', Prezzo float(6,3) default '0.000', Data_Immissione date default NULL, Ora_Immissione time default NULL, Record_Sospeso tinyint(3) unsigned default '0', Lotto_Vendita varchar(50) default NULL, Record_Prenotato tinyint(3) unsigned default '0', PRIMARY KEY (ID), KEY ID_Clienti (ID_Clienti), KEY ID_DettagllioAcquisti (ID_DettaglioAcquisti), KEY ID_CodiciMerciAppoggio (ID_CodiciMerciAppoggio), KEY ID_AliquoteIva (ID_AliquoteIva), KEY ID_FattureVendita (ID_FattureVendita), KEY ID_UnitaMisura (ID_UnitaMisura) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE aliquoteiva ( ID tinyint(3) unsigned NOT NULL auto_increment, Percentuale tinyint(3) unsigned default '0', PRIMARY KEY (ID) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; CREATE TABLE fatturevendita ( ID mediumint(8) unsigned NOT NULL auto_increment, Numero_Fattura mediumint(8) unsigned NOT NULL default '0', ID_Clienti mediumint(8) unsigned default '0', Documento_Annullato tinyint(1) unsigned default '0', Data_Emissione date NOT NULL default '0000-00-00', Ora_Emissione time default NULL, Credito tinyint(3) unsigned default '0', Esportata tinyint(3) unsigned default '0', ID_SaldoFatture mediumint(8) unsigned default '0', ID_FattureVendita_NotaCredito mediumint(8) unsigned default '0', ID_Venditori smallint(5) unsigned default '1', PRIMARY KEY (ID) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO aliquoteiva (ID, Percentuale) VALUES (NULL, 4); INSERT INTO vendite (ID, ID_Clienti, ID_DettaglioAcquisti, ID_CodiciMerciAppoggio, ID_AliquoteIva, ID_FattureVendita, ID_UnitaMisura, Numero_Colli, Peso_Lordo, Tara_Unitaria, Prezzo, Data_Immissione, Ora_Immissione, Record_Sospeso, Lotto_Vendita, Record_Prenotato) VALUES (NULL, 99, 0, 'AA', 1, 1, 1, 100, 1234, 0.55, 1.368, '2006-04-10', NULL, 0, NULL, 0); INSERT INTO vendite (ID, ID_Clienti, ID_DettaglioAcquisti, ID_CodiciMerciAppoggio, ID_AliquoteIva, ID_FattureVendita, ID_UnitaMisura, Numero_Colli, Peso_Lordo, Tara_Unitaria, Prezzo, Data_Immissione, Ora_Immissione, Record_Sospeso, Lotto_Vendita, Record_Prenotato) VALUES (NULL, 99, 0, 'AB', 1, 1, 1, 100, 4321, 0.35, 1.746, '2006-04-10', NULL, 0, NULL, 0); INSERT INTO vendite (ID, ID_Clienti, ID_DettaglioAcquisti, ID_CodiciMerciAppoggio, ID_AliquoteIva, ID_FattureVendita, ID_UnitaMisura, Numero_Colli, Peso_Lordo, Tara_Unitaria, Prezzo, Data_Immissione, Ora_Immissione, Record_Sospeso, Lotto_Vendita, Record_Prenotato) VALUES (NULL, 99, 0, 'AC', 1, 1, 1, 100, 3241, 0.43, 1.345, '2006-04-10', NULL, 0, NULL, 0); INSERT INTO vendite (ID, ID_Clienti, ID_DettaglioAcquisti, ID_CodiciMerciAppoggio, ID_AliquoteIva, ID_FattureVendita, ID_UnitaMisura, Numero_Colli, Peso_Lordo, Tara_Unitaria, Prezzo, Data_Immissione, Ora_Immissione, Record_Sospeso, Lotto_Vendita, Record_Prenotato) VALUES (NULL, 99, 0, 'AA', 1, 2, 2, 0, 1234, 0, -0.345, '2006-04-10', NULL, 0, NULL, 0); INSERT INTO fatturevendita (ID, Numero_Fattura, ID_Clienti, Documento_Annullato, Data_Emissione, Ora_Emissione, Credito, Esportata, ID_SaldoFatture, ID_FattureVendita_NotaCredito, ID_Venditori) VALUES (NULL, 1000, 99, 0, '2006-04-10', NULL, 0, 0, 0, 2, 1); INSERT INTO fatturevendita (ID, Numero_Fattura, ID_Clienti, Documento_Annullato, Data_Emissione, Ora_Emissione, Credito, Esportata, ID_SaldoFatture, ID_FattureVendita_NotaCredito, ID_Venditori) VALUES (NULL, 1001, 99, 0, '2006-04-10', NULL, 0, 0, 0, 2, 1); ================================================== SELECT aliquoteiva.Percentuale, IF(vendite.Prezzo > 0, SUM(TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))+0.0051,2)), SUM(TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))-0.0051,2)) ) AS Tot_Imponibile, IF(vendite.Prezzo > 0, SUM(TRUNCATE(((TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))+0.0051,2))*(aliquoteiva.Percentuale/100))+0.0051,2)), SUM(TRUNCATE(((TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))-0.0051,2))*(aliquoteiva.Percentuale/100))-0.0051,2)) ) AS Tot_IVA, IF(vendite.Prezzo > 0, SUM(TRUNCATE(((TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))+0.0051,2))*(1+(aliquoteiva.Percentuale/100)))+0.0051,2)), SUM(TRUNCATE(((TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))-0.0051,2))*(1+(aliquoteiva.Percentuale/100)))-0.0051,2)) ) AS Tot_Importo FROM vendite LEFT JOIN aliquoteiva ON aliquoteiva.ID = vendite.ID_AliquoteIva LEFT JOIN fatturevendita ON fatturevendita.ID = vendite.ID_FattureVendita WHERE fatturevendita.Data_Emissione >= '20060410' AND fatturevendita.Data_Emissione <= '20060410' GROUP BY vendite.ID WITH ROLLUP ; ================================================== SELECT aliquoteiva.Percentuale, SUM(TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))+(SIGN(vendite.Prezzo)*0.0051),2)) AS Tot_Imponibile, SUM(TRUNCATE(((TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))+(SIGN(vendite.Prezzo)*0.0051),2))*(aliquoteiva.Percentuale/100))+(SIGN(vendite.Prezzo)*0.0051),2)) AS Tot_IVA, SUM(TRUNCATE(((TRUNCATE((vendite.Prezzo*(vendite.Peso_Lordo-(vendite.Numero_Colli*vendite.Tara_Unitaria)))+(SIGN(vendite.Prezzo)*0.0051),2))*(1+(aliquoteiva.Percentuale/100)))+(SIGN(vendite.Prezzo)*0.0051),2)) AS Tot_Importo FROM vendite LEFT JOIN aliquoteiva ON aliquoteiva.ID = vendite.ID_AliquoteIva LEFT JOIN fatturevendita ON fatturevendita.ID = vendite.ID_FattureVendita WHERE fatturevendita.Data_Emissione >= '20060410' AND fatturevendita.Data_Emissione <= '20060410' GROUP BY vendite.ID WITH ROLLUP ;