From marcello a vezz.it Thu Feb 1 00:02:58 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Thu Feb 1 00:23:44 2007 Subject: [Db] contatore server side In-Reply-To: <45C09CBB.6010505@pleiade.it> References: <459B7A49.3020404@vezz.it> <459B7A36.7010907@ziobudda.net> <459B7C11.3050909@vezz.it> <459B8625.5090501@pleiade.it> <459B8970.2050407@vezz.it> <459B8E6B.9010001@pleiade.it> <459B9153.1000504@vezz.it> <459B92A7.5040301@pleiade.it> <459B955B.6090302@vezz.it> <459B9BFB.5020808@pleiade.it> <459BB73F.5040207@vezz.it> <459BBA7B.1010304@pleiade.it> <459BBD30.2040505@vezz.it> <459BC29C.90003@pleiade.it> <45BF361A.50305@vezz.it> <45BF570F.4090305@vezz.it> <45C09CBB.6010505@pleiade.it> Message-ID: <45C12022.4000305@vezz.it> Domenico L. ha scritto: > >> Bella fregatura! >> >> Aggiungo anche che è una sofferenza per me cercare informazioni >> sull'help in linea di mysql. > ma scusa andare sull'help on line no;-)? > http://it.mysql.com/doc/refman/5.0/en/triggers.html > > o in linea voleva dire on line? :-) Si, traduzione tipo "sfera del roditore". > > è abbastanza singolare che cmq in una procedura tu possa usare del dml > e non in una funzione/trigger non trovi? Decisamente. Spero che Francesco posti la sua implementazione con la procedura al posto della funzione, è molto interessante. Ciao Marcello From franco a inpe.unipi.it Thu Feb 1 08:32:21 2007 From: franco a inpe.unipi.it (Francesco F) Date: Thu Feb 1 08:52:37 2007 Subject: [Db] contatore server side In-Reply-To: <45C12022.4000305@vezz.it> References: <459B7A49.3020404@vezz.it> <459B7A36.7010907@ziobudda.net> <459B7C11.3050909@vezz.it> <459B8625.5090501@pleiade.it> <459B8970.2050407@vezz.it> <459B8E6B.9010001@pleiade.it> <459B9153.1000504@vezz.it> <459B92A7.5040301@pleiade.it> <459B955B.6090302@vezz.it> <459B9BFB.5020808@pleiade.it> <459BB73F.5040207@vezz.it> <459BBA7B.1010304@pleiade.it> <459BBD30.2040505@vezz.it> <459BC29C.90003@pleiade.it> <45BF361A.50305@vezz.it> <45BF570F.4090305@vezz.it> <45C09CBB.6010505@pleiade.it> <45C12022.4000305@vezz.it> Message-ID: <45C19785.8000608@inpe.unipi.it> On 01/02/2007 0.02, Marcello Vezzelli wrote: > Spero che Francesco posti la sua implementazione con la procedura al > posto della funzione, è molto interessante. Dopo aver fatto alcune prove con le function, sono passato alle store procedure e, apparentemente funziona: ## StoreProcedure ## create procedure getNewID (IN p_anno int(4), OUT p_newID INT) BEGIN select (if(isnull(max(id)), 0, max(id)) + 1) into p_newID from tabella where tabella.anno = p_anno; END;// ## Trigger ## create trigger getNewID BEFORE INSERT ON tabella for each row BEGIN call getNewID(NEW.anno, @newID); SET NEW.id = @newID; END; Per completezza, riporto anche la struttura di "tabella": CREATE TABLE `tabella` ( `anno` int(4) NOT NULL, `id` int(4) NOT NULL, `txt` varchar(16) NOT NULL, PRIMARY KEY (`anno`,`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; Non sono ferrato in sql, ne approfitto per far due domande: 1 - è preferibile utilizzare nella SP il max(id) oppure un ordinamento decrescente della tabella per id, con un limit 0,1? 2 - è possibile che due processi concorrenti ottengono lo stesso newID? Francesco From domenico.lorusso a pleiade.it Thu Feb 1 09:46:16 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Thu Feb 1 10:03:04 2007 Subject: [Db] contatore server side In-Reply-To: <45C19785.8000608@inpe.unipi.it> References: <459B7A49.3020404@vezz.it> <459B7A36.7010907@ziobudda.net> <459B7C11.3050909@vezz.it> <459B8625.5090501@pleiade.it> <459B8970.2050407@vezz.it> <459B8E6B.9010001@pleiade.it> <459B9153.1000504@vezz.it> <459B92A7.5040301@pleiade.it> <459B955B.6090302@vezz.it> <459B9BFB.5020808@pleiade.it> <459BB73F.5040207@vezz.it> <459BBA7B.1010304@pleiade.it> <459BBD30.2040505@vezz.it> <459BC29C.90003@pleiade.it> <45BF361A.50305@vezz.it> <45BF570F.4090305@vezz.it> <45C09CBB.6010505@pleiade.it> <45C12022.4000305@vezz.it> <45C19785.8000608@inpe.unipi.it> Message-ID: <45C1A8D8.4060107@pleiade.it> Francesco F ha scritto: > > 1 - è preferibile utilizzare nella SP il max(id) oppure un ordinamento > decrescente della tabella per id, con un limit 0,1? secondo me il max anche perché il limit è una cosa specifica di mysql > > 2 - è possibile che due processi concorrenti ottengono lo stesso newID? scusa ma questa soluzione funziona? è assurdo. cioè io sapevo che in un trigger riferito a "tabella" qualsiasi accesso a "tabella" (nel trigger o in una procedura a lui connessa) dovrebbe dare errore! Cmq non c'è il rischio di id duplicati perché è una myisam che ha il lock a livello di tabella, cioè quando parte il trigger tutta la tabella è lockata, se passi a innodb questa sicurezza non l'hai più. Per ovviare e avere un'assoluta sequenzialità occorre per forza avere un primo inserimento di un codice dummy e successivamente il codice sequenziale corretto. :-) ciauz -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From franco a inpe.unipi.it Thu Feb 1 09:57:04 2007 From: franco a inpe.unipi.it (Francesco F) Date: Thu Feb 1 10:17:22 2007 Subject: [Db] contatore server side In-Reply-To: <45C1A8D8.4060107@pleiade.it> References: <459B7A49.3020404@vezz.it> <459B7A36.7010907@ziobudda.net> <459B7C11.3050909@vezz.it> <459B8625.5090501@pleiade.it> <459B8970.2050407@vezz.it> <459B8E6B.9010001@pleiade.it> <459B9153.1000504@vezz.it> <459B92A7.5040301@pleiade.it> <459B955B.6090302@vezz.it> <459B9BFB.5020808@pleiade.it> <459BB73F.5040207@vezz.it> <459BBA7B.1010304@pleiade.it> <459BBD30.2040505@vezz.it> <459BC29C.90003@pleiade.it> <45BF361A.50305@vezz.it> <45BF570F.4090305@vezz.it> <45C09CBB.6010505@pleiade.it> <45C12022.4000305@vezz.it> <45C19785.8000608@inpe.unipi.it> <45C1A8D8.4060107@pleiade.it> Message-ID: <45C1AB60.6090903@inpe.unipi.it> On 01/02/2007 9.46, Domenico L. wrote: > Francesco F ha scritto: >> >> 1 - è preferibile utilizzare nella SP il max(id) oppure un ordinamento >> decrescente della tabella per id, con un limit 0,1? > secondo me il max anche perché il limit è una cosa specifica di mysql Quello che pensavo.. >> 2 - è possibile che due processi concorrenti ottengono lo stesso newID? > scusa ma questa soluzione funziona? è assurdo. cioè io sapevo che in un > trigger riferito a "tabella" qualsiasi accesso a "tabella" (nel trigger > o in una procedura a lui connessa) dovrebbe dare errore! Difatti con una function dà errore, con una SP no (misteri di mysql) > Per ovviare e avere un'assoluta sequenzialità occorre per forza avere un > primo inserimento di un codice dummy e successivamente il codice > sequenziale corretto. :-) L' (if(isnull(max(id)), 0, max(id)) + 1) non è sufficiente? > > ciauz Grazie, Francesco From domenico.lorusso a pleiade.it Thu Feb 1 10:53:51 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Thu Feb 1 11:11:40 2007 Subject: [Db] contatore server side In-Reply-To: <45C1AB60.6090903@inpe.unipi.it> References: <459B7A49.3020404@vezz.it> <459B7A36.7010907@ziobudda.net> <459B7C11.3050909@vezz.it> <459B8625.5090501@pleiade.it> <459B8970.2050407@vezz.it> <459B8E6B.9010001@pleiade.it> <459B9153.1000504@vezz.it> <459B92A7.5040301@pleiade.it> <459B955B.6090302@vezz.it> <459B9BFB.5020808@pleiade.it> <459BB73F.5040207@vezz.it> <459BBA7B.1010304@pleiade.it> <459BBD30.2040505@vezz.it> <459BC29C.90003@pleiade.it> <45BF361A.50305@vezz.it> <45BF570F.4090305@vezz.it> <45C09CBB.6010505@pleiade.it> <45C12022.4000305@vezz.it> <45C19785.8000608@inpe.unipi.it> <45C1A8D8.4060107@pleiade.it> <45C1AB60.6090903@inpe.unipi.it> Message-ID: <45C1B8AF.9010306@pleiade.it> Francesco F ha scritto: > Difatti con una function dà errore, con una SP no (misteri di mysql) Mah... il discorso funciton, siccome lo aveva anche Oracle, supponevo fosse legato ad un qualche tipo di implementazione che mi sfuggiva, che ne so: le function possono essere usate dentro le query quindi devono avere tempi molto brevi, oppure non hai la sicurezza che la funzione non acceda alla stessa tabella che stai manipolando rischiando un deadlock... Però non ha senso che richiamando un una procedura che modifica la tabela del trigger che ha richiamato la procedura non si incastri. Ci si ingarbuglia solo a dirlo! > >> Per ovviare e avere un'assoluta sequenzialità occorre per forza avere >> un primo inserimento di un codice dummy e successivamente il codice >> sequenziale corretto. :-) > L' (if(isnull(max(id)), 0, max(id)) + 1) non è sufficiente? beh dunque avendo il lock a livello di riga: tempo 0 utente A fa una insert tempo 1 utente B fa una insert tempo 2 processo di A, ottiene il numero massimo e ci aggiunge 1 tempo 3 processo di B, fa la stessa cosa tempo 4 processo A inserisce il record tempo 5 processo B inserisce il record morale B va in errore perché la primary key è duplicata Una soluzione è quella di ottenere il valore e (con un isolation level molto elevato) di inserire subito il record. Ora con i lock a livello di tabella questo problema non c'è, perché come A inizia, B dovrebbe rimanere in attesa che finisca A Con gli innodb, dovresti richiedere un lock di tipo write su tutta la tabella (non so la sintassi purtroppo, ma dovrebbe riguardare l'isolation level), in questo modo tutti possono leggere ma solo tu scrivi, il problema è che blocchi anche gli update. Se invece utilizzi una tabella di appoggio da cui ricavare solo l'id (può essere unica per tutte le tabelle e per tutti i casi) la cosa potrebbe migliorare perché già solo con un lock a livello di riga dovresti essere sicuro di non creare casini: trigger before recupero nextId (se non c'è il record lo inserisco con valore 0) esiste il costrutto *select ... for update* http://dev.mysql.com/doc/refman/5.1/en/innodb-locking-reads.html trigger after update di nextId in tabella appoggio ciauz -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Thu Feb 1 12:04:33 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Thu Feb 1 12:27:58 2007 Subject: [Db] contatore server side In-Reply-To: <45C1B8AF.9010306@pleiade.it> References: <459B7A49.3020404@vezz.it> <459B7A36.7010907@ziobudda.net> <459B7C11.3050909@vezz.it> <459B8625.5090501@pleiade.it> <459B8970.2050407@vezz.it> <459B8E6B.9010001@pleiade.it> <459B9153.1000504@vezz.it> <459B92A7.5040301@pleiade.it> <459B955B.6090302@vezz.it> <459B9BFB.5020808@pleiade.it> <459BB73F.5040207@vezz.it> <459BBA7B.1010304@pleiade.it> <459BBD30.2040505@vezz.it> <459BC29C.90003@pleiade.it> <45BF361A.50305@vezz.it> <45BF570F.4090305@vezz.it> <45C09CBB.6010505@pleiade.it> <45C12022.4000305@vezz.it> <45C19785.8000608@inpe.unipi.it> <45C1A8D8.4060107@pleiade.it> <45C1AB60.6090903@inpe.unipi.it> <45C1B8AF.9010306@pleiade.it> Message-ID: <45C1C941.7020709@vezz.it> Domenico L. wrote: > > Con gli innodb, dovresti richiedere un lock di tipo write su tutta la > tabella (non so la sintassi purtroppo, ma dovrebbe riguardare > l'isolation level), in questo modo tutti possono leggere ma solo tu > scrivi, il problema è che blocchi anche gli update. Dovrebbe essere qualcosa del tipo LOCK TABLES fatture WRITE; ... UNLOCK TABLES; Solo che c'è il problema dell'autocommit... http://dev.mysql.com/doc/refman/5.1/en/lock-tables.html The correct way to use |LOCK TABLES| with transactional tables, such as |InnoDB| tables, is to set |AUTOCOMMIT = 0| and not to call |UNLOCK TABLES| until you commit the transaction explicitly. When you call |LOCK TABLES|, |InnoDB| internally takes its own table lock, and MySQL takes its own table lock. |InnoDB| releases its table lock at the next commit, but for MySQL to release its table lock, you have to call |UNLOCK TABLES|. You should not have |AUTOCOMMIT = 1|, because then |InnoDB| releases its table lock immediately after the call of |LOCK TABLES|, and deadlocks can very easily happen. Note that we do not acquire the |InnoDB| table lock at all if |AUTOCOMMIT=1|, to help old applications avoid unnecessary deadlocks. Certo che cmq è un delirio dover impazzire per una cosa relativamente facile. In questo caso la tabella "fatture" potrebbe anche essere myIsam che non succede niente... però se uno avesse veramente bisogno di questo meccanismo su una tabella InnoDb c'è da tribolare non poco. Troppe restrizioni o giravolte da fare. Saluti Marcello From domenico.lorusso a pleiade.it Thu Feb 1 12:21:10 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Thu Feb 1 12:40:45 2007 Subject: [Db] contatore server side In-Reply-To: <45C1C941.7020709@vezz.it> References: <459B7A49.3020404@vezz.it> <459B7A36.7010907@ziobudda.net> <459B7C11.3050909@vezz.it> <459B8625.5090501@pleiade.it> <459B8970.2050407@vezz.it> <459B8E6B.9010001@pleiade.it> <459B9153.1000504@vezz.it> <459B92A7.5040301@pleiade.it> <459B955B.6090302@vezz.it> <459B9BFB.5020808@pleiade.it> <459BB73F.5040207@vezz.it> <459BBA7B.1010304@pleiade.it> <459BBD30.2040505@vezz.it> <459BC29C.90003@pleiade.it> <45BF361A.50305@vezz.it> <45BF570F.4090305@vezz.it> <45C09CBB.6010505@pleiade.it> <45C12022.4000305@vezz.it> <45C19785.8000608@inpe.unipi.it> <45C1A8D8.4060107@pleiade.it> <45C1AB60.6090903@inpe.unipi.it> <45C1B8AF.9010306@pleiade.it> <45C1C941.7020709@vezz.it> Message-ID: <45C1CD26.50302@pleiade.it> Marcello Vezzelli ha scritto: > Dovrebbe essere qualcosa del tipo > LOCK TABLES fatture WRITE; > ... > UNLOCK TABLES; > > Solo che c'è il problema dell'autocommit... beh, è mysql che ragiona male (secondo me), l'autocommit va messo a off sempre, altrimenti che transazionalità abbiamo :-) > > > In questo caso la tabella "fatture" potrebbe anche essere myIsam che > non succede niente... però se uno avesse veramente bisogno di questo > meccanismo su una tabella InnoDb c'è da tribolare non poco. Mah... ti dirò per il tuo problema specifico, non credo che con una altro dbms avresti dovuto studiarci meno. Però con mysql devi metterti a controllare anche l'ovvio (vedi autocommit e dml in sp richiamata da trigger), e questo non è bene. Se mi stessi parlando di un altro dbms, avresti cmq dovuto ricorrere ad una tabella di appoggio, anzi può anche darsi che la soluzione di Francesco funzioni solo perché la tabella è myisam.... vabbeh :-) ciao -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Fri Feb 2 11:05:58 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Fri Feb 2 11:26:26 2007 Subject: [Db] mysql 5.0.33 bin Message-ID: <45C30D06.6080500@vezz.it> Ciao, per chi non vuole compilare i sorci della 5.0.33... http://www.apachelounge.com/download/binaries/mysql-5.0.33-win32.zip Saluti Marcello From domenico.lorusso a pleiade.it Mon Feb 19 15:03:42 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Feb 19 15:25:13 2007 Subject: [Db] [mysql] Time stamp Message-ID: <45D9AE3E.80700@pleiade.it> Ciao ragazzi, che voi sappiate c'è un cambio di gestione/visualizzazione dei timestamp da mysql 4.0 alla 4.1?? Sapete se è possibile definire un formato predefinito di output? ciao -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From domenico.lorusso a pleiade.it Tue Feb 20 17:10:00 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Tue Feb 20 17:31:38 2007 Subject: [Db] [Mysql] Decimal or Double Message-ID: <45DB1D58.4040708@pleiade.it> Ciao all, avrei il bisogno gestire con precisione numeri molto grossi (miliardi) oppure molto piccoli. Tutto nella stessa tabella, però non mi capita mai che ho grossi numeri con molti decimali, in pratica posso considerare che devo memorizzare al più 12 cifre, ma non so esattamente dove si posizione la virgola. Qual'è la soluzione migliore (se esiste), se uso un double dovrei fare una cosa tipo double(22,8), se uso il decimal? idem? ciao -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Tue Feb 20 18:20:29 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Tue Feb 20 18:45:09 2007 Subject: [Db] [Mysql] Decimal or Double In-Reply-To: <45DB1D58.4040708@pleiade.it> References: <45DB1D58.4040708@pleiade.it> Message-ID: <45DB2DDD.5050004@vezz.it> Domenico L. ha scritto: > Ciao all, > avrei il bisogno gestire con precisione numeri molto grossi (miliardi) > oppure molto piccoli. > > Tutto nella stessa tabella, però non mi capita mai che ho grossi > numeri con molti decimali, in pratica posso considerare che devo > memorizzare al più 12 cifre, ma non so esattamente dove si posizione > la virgola. > > Qual'è la soluzione migliore (se esiste), se uso un double dovrei fare > una cosa tipo double(22,8), se uso il decimal? idem? Dal manuale online: |DOUBLE[(/|M|/,/|D|/)] [UNSIGNED] [ZEROFILL]| A normal-size (double-precision) floating-point number. Allowable values are |-1.7976931348623157E+308| to |-2.2250738585072014E-308|, |0|, and |2.2250738585072014E-308| to |1.7976931348623157E+308|. These are the theoretical limits, based on the IEEE standard. The actual range might be slightly smaller depending on your hardware or operating system. /|M|/ is the total number of digits and /|D|/ is the number of digits following the decimal point. If /|M|/ and /|D|/ are omitted, values are stored to the limits allowed by the hardware. A double-precision floating-point number is accurate to approximately 15 decimal places. |DECIMAL[(/|M|/[,/|D|/])] [UNSIGNED] [ZEROFILL]| For MySQL 5.0.3 and above: A packed ?exact? fixed-point number. /|M|/ is the total number of digits (the precision) and /|D|/ is the number of digits after the decimal point (the scale). The decimal point and (for negative numbers) the ?|-|? sign are not counted in /|M|/. If /|D|/ is 0, values have no decimal point or fractional part. The maximum number of digits (/|M|/) for |DECIMAL| is 65 (64 from 5.0.3 to 5.0.5). The maximum number of supported decimals (/|D|/) is 30. If /|D|/ is omitted, the default is 0. If /|M|/ is omitted, the default is 10. Se parli di miliardi (1.000.000.000) e di milionesimi (0.000000001) , secondo me è sufficiente il double. Dovrebbe essere anche più prestazionale nei calcoli. Occhio pero' agli arrotondamenti... potresti trovarti con dei "rotti" dovuti al formato di memorizzazione, cose del tipo 0.00000000100023 se memorizzi 0.0000000001 (esempio inventato). Puoi gestire la cosa con un round alla precisione che vuoi tipo così (round(valore * 1000000000)/1000000000) Se vuoi evitare questo problema, usa decimal. Saluti Marcello From domenico.lorusso a pleiade.it Wed Feb 21 08:51:35 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed Feb 21 09:13:21 2007 Subject: [Db] [Mysql] Decimal or Double In-Reply-To: <45DB2DDD.5050004@vezz.it> References: <45DB1D58.4040708@pleiade.it> <45DB2DDD.5050004@vezz.it> Message-ID: <45DBFA07.7040404@pleiade.it> Marcello Vezzelli ha scritto: > Se parli di miliardi (1.000.000.000) e di milionesimi (0.000000001) , > secondo me è sufficiente il double. Dovrebbe essere anche più > prestazionale nei calcoli. > Occhio pero' agli arrotondamenti... potresti trovarti con dei "rotti" > dovuti al formato di memorizzazione, cose del tipo 0.00000000100023 se > memorizzi 0.0000000001 (esempio inventato). Puoi gestire la cosa con > un round alla precisione che vuoi tipo così (round(valore * > 1000000000)/1000000000) > Se vuoi evitare questo problema, usa decimal. Il problema sono proprio gli arrotondamenti, io devo memorizzare il dato preciso, però un certo gruppo di record (campogruppo uguale) che memorizzano fino a 10^12 cifre intere, e altri record che possono arrivare a memorizzare fino numeri compresi tra 0 e 1 con una precisione di 9 cifre decimali. Quello che non succede mai è che debba sommare/confrontare tra loro queste cifre così disparate. Speravo esistesse un formato preciso a virgola mobile (tipo myDecimal(12) -> tu puoi registrare in tutto 12 cifre la posizione della virgola non centra ) a questo punto mi conviene gestire il campo come stringa e sfruttare la conversione implicita.... Che brutta roba! -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Wed Feb 21 09:19:10 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed Feb 21 09:43:30 2007 Subject: [Db] [Mysql] Decimal or Double In-Reply-To: <45DBFA07.7040404@pleiade.it> References: <45DB1D58.4040708@pleiade.it> <45DB2DDD.5050004@vezz.it> <45DBFA07.7040404@pleiade.it> Message-ID: <45DC007E.2070709@vezz.it> Domenico L. ha scritto: > >> Se vuoi evitare questo problema, usa decimal. > Il problema sono proprio gli arrotondamenti, io devo memorizzare il > dato preciso, però un certo gruppo di record (campogruppo uguale) che > memorizzano fino a 10^12 cifre intere, e altri record che possono > arrivare a memorizzare fino numeri compresi tra 0 e 1 con una > precisione di 9 cifre decimali. > > Quello che non succede mai è che debba sommare/confrontare tra loro > queste cifre così disparate. > > Speravo esistesse un formato preciso a virgola mobile (tipo > myDecimal(12) -> tu puoi registrare in tutto 12 cifre la posizione > della virgola non centra ) Ma infatti, usa decimal! E' la memorizzazione "esatta" che ti serve. Ciao Marcello From domenico.lorusso a pleiade.it Wed Feb 21 10:37:55 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed Feb 21 11:00:51 2007 Subject: [Db] [Mysql] Decimal or Double In-Reply-To: <45DC007E.2070709@vezz.it> References: <45DB1D58.4040708@pleiade.it> <45DB2DDD.5050004@vezz.it> <45DBFA07.7040404@pleiade.it> <45DC007E.2070709@vezz.it> Message-ID: <45DC12F3.2040300@pleiade.it> Marcello Vezzelli ha scritto: > Domenico L. ha scritto: > > Ma infatti, usa decimal! > E' la memorizzazione "esatta" che ti serve. > sì però dovrei dargli un 22,9 che è una bella dimensione... soprattutto se consideri che sono su mysql 4.0 (passare al 5 sembra un'utopia irrealizzabile sigh, sob) -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From marcello a vezz.it Wed Feb 21 10:46:52 2007 From: marcello a vezz.it (Marcello Vezzelli) Date: Wed Feb 21 11:11:39 2007 Subject: [Db] [Mysql] Decimal or Double In-Reply-To: <45DC12F3.2040300@pleiade.it> References: <45DB1D58.4040708@pleiade.it> <45DB2DDD.5050004@vezz.it> <45DBFA07.7040404@pleiade.it> <45DC007E.2070709@vezz.it> <45DC12F3.2040300@pleiade.it> Message-ID: <45DC150C.90507@vezz.it> Domenico L. ha scritto: > >> Ma infatti, usa decimal! >> E' la memorizzazione "esatta" che ti serve. >> > sì però dovrei dargli un 22,9 che è una bella dimensione... > soprattutto se consideri che sono su mysql 4.0 (passare al 5 sembra > un'utopia irrealizzabile sigh, sob) Beh sempre meglio che usare un varchar e affidarsi alla conversione ogni volta... Certo che ormai mysql 4 è paleontologico confronto al 5 (e ancora di più a confronto con gli altri DMBS). Saluti Marcello From domenico.lorusso a pleiade.it Wed Feb 21 10:55:18 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed Feb 21 11:17:56 2007 Subject: [Db] [Mysql] Decimal or Double In-Reply-To: <45DC150C.90507@vezz.it> References: <45DB1D58.4040708@pleiade.it> <45DB2DDD.5050004@vezz.it> <45DBFA07.7040404@pleiade.it> <45DC007E.2070709@vezz.it> <45DC12F3.2040300@pleiade.it> <45DC150C.90507@vezz.it> Message-ID: <45DC1706.8080306@pleiade.it> Marcello Vezzelli ha scritto: > Certo che ormai mysql 4 è paleontologico confronto al 5 (e ancora di più > a confronto con gli altri DMBS). > > non lo dire a me che mi sono fatto le ossa su Oracle!! Purtroppo esigenze non meglio precisate e da noi indipendenti ci impediscono di cambiare.... -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From cristiano a verondini.it Wed Feb 21 12:04:08 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Wed Feb 21 12:34:10 2007 Subject: [Db] [Mysql] Decimal or Double References: <45DB1D58.4040708@pleiade.it> <45DB2DDD.5050004@vezz.it> <45DBFA07.7040404@pleiade.it> Message-ID: <036901c755a8$05c1eb90$6301a8c0@IdeaFutura.local> >> Speravo esistesse un formato preciso a virgola mobile (tipo >> myDecimal(12) -> tu puoi registrare in tutto 12 cifre la posizione >> della virgola non centra ) Non esiste una rappresentazione precisa per i numeri reali. D'altra parte essendo questi infiniti, non sarebbe teoricamente possibile. >> a questo punto mi conviene gestire il campo come stringa e sfruttare >> la conversione implicita.... Una volta però che li ritrasformi in numeri, sei daccapo: la conversione porta errori di rappresentazione. Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From domenico.lorusso a pleiade.it Wed Feb 21 12:41:13 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Wed Feb 21 13:07:46 2007 Subject: [Db] [Mysql] Decimal or Double In-Reply-To: <036901c755a8$05c1eb90$6301a8c0@IdeaFutura.local> References: <45DB1D58.4040708@pleiade.it> <45DB2DDD.5050004@vezz.it> <45DBFA07.7040404@pleiade.it> <036901c755a8$05c1eb90$6301a8c0@IdeaFutura.local> Message-ID: <45DC2FD9.8030008@pleiade.it> Cristiano Verondini ha scritto: >>> Speravo esistesse un formato preciso a virgola mobile (tipo >>> myDecimal(12) -> tu puoi registrare in tutto 12 cifre la posizione >>> della virgola non centra ) > > Non esiste una rappresentazione precisa per i numeri reali. D'altra > parte essendo questi infiniti, non sarebbe teoricamente possibile. Infatti non parlo di numeri reali ma di un sottinsieme finito e con cardinalità 2*11*10^N -1 :-) > >>> a questo punto mi conviene gestire il campo come stringa e sfruttare >>> la conversione implicita.... > > Una volta però che li ritrasformi in numeri, sei daccapo: la > conversione porta errori di rappresentazione. ok ma è meno grave che facendo i calcoli ci siano errori, per me è indispensabile che il dato sia memorizzato correttamente -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From cristiano a verondini.it Wed Feb 21 12:48:42 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Wed Feb 21 13:20:43 2007 Subject: [Db] [Mysql] Decimal or Double References: <45DB1D58.4040708@pleiade.it><45DB2DDD.5050004@vezz.it> <45DBFA07.7040404@pleiade.it><036901c755a8$05c1eb90$6301a8c0@IdeaFutura.local> <45DC2FD9.8030008@pleiade.it> Message-ID: <03cb01c755ae$3f9aab80$6301a8c0@IdeaFutura.local> >>> Non esiste una rappresentazione precisa per i numeri reali. >>> D'altra parte essendo questi infiniti, non sarebbe teoricamente >>> possibile. >> Infatti non parlo di numeri reali ma di un sottinsieme finito e con >> cardinalità 2*11*10^N -1 :-) Purtroppo ai fini della rappresentazione, qualsiasi sottoinsieme ha cardinalità infinita, quindi l'unico modo sarebbe di creare una tua rappresentazione, che in effetti è quello che fai memorizzando i dati come stringhe. >>> Una volta però che li ritrasformi in numeri, sei daccapo: la >>> conversione porta errori di rappresentazione. >> ok ma è meno grave che facendo i calcoli ci siano errori, per me è >> indispensabile che il dato sia memorizzato correttamente Allora la memorizzazione come stringa è l'unica strada :) Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From giovanni.cappellini a gmail.com Fri Feb 23 15:22:13 2007 From: giovanni.cappellini a gmail.com (Giovanni Cappellini) Date: Fri Feb 23 15:47:13 2007 Subject: [Db] Right Join Message-ID: <45DEF895.2020303@gmail.com> Vorrei sapere come si fa a sapere se in una tabella table1, che ha tre chiavi esterne, sono state esaurite tutte le possibili combinazioni delle tre chiavi esterne stesse. Sono arrivato a questa query: SELECT ... FROM table1 RIGHT JOIN table2 on (table1.id2 = table2.id2) RIGHT JOIN table3 on (table1.id3 = table3.id3) RIGHT JOIN table4 on (table1.id4 = table4.id4) Mi aspettavo di trovare delle righe con id1 = NULL ma non è stato così... :( Come fare? From giovanni.cappellini a gmail.com Fri Feb 23 15:45:21 2007 From: giovanni.cappellini a gmail.com (Giovanni Cappellini) Date: Fri Feb 23 16:10:50 2007 Subject: [Db] Right Join In-Reply-To: <45DEF895.2020303@gmail.com> References: <45DEF895.2020303@gmail.com> Message-ID: <45DEFE01.2060702@gmail.com> Giovanni Cappellini wrote: > Vorrei sapere come si fa a sapere se in una tabella table1, che ha tre > chiavi esterne, sono state esaurite tutte le possibili combinazioni > delle tre chiavi esterne stesse. Sono arrivato a questa query: > > SELECT ... > FROM table1 > RIGHT JOIN table2 on (table1.id2 = table2.id2) > RIGHT JOIN table3 on (table1.id3 = table3.id3) > RIGHT JOIN table4 on (table1.id4 = table4.id4) > > Mi aspettavo di trovare delle righe con id1 = NULL ma non è stato > così... :( Come fare? Ciao Giovanni, devi fare così: SELECT * FROM table1 RIGHT JOIN ( SELECT * FROM table2, table3, table4 ) AS chiavi_esterne ON table1.id2 = table2.id2 AND table1.id3 = table3.id4 AND table1.id4 = table3.id4 Scusate... è venerdì, sono cotto... From simone a tomato.it Mon Feb 26 16:49:11 2007 From: simone a tomato.it (Simone Fumagalli) Date: Mon Feb 26 17:12:52 2007 Subject: [Db] Tool creazione viste MySQL Message-ID: <45E30177.4050309@tomato.it> Ciao, volevo sapere se qualcuno conosce o meglio utilizzato qualche tool per gestire DB in MySQL. Mi interessava soprattuto la possibilità di creare viste in modo visuale. Grazie Simone From domenico.lorusso a pleiade.it Mon Feb 26 17:30:14 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Feb 26 17:52:53 2007 Subject: [Db] Tool creazione viste MySQL In-Reply-To: <45E30177.4050309@tomato.it> References: <45E30177.4050309@tomato.it> Message-ID: <45E30B16.2050903@pleiade.it> Simone Fumagalli ha scritto: > Ciao, > volevo sapere se qualcuno conosce o meglio utilizzato qualche tool per > gestire DB in MySQL. Mi interessava soprattuto la possibilità di > creare viste in modo visuale. > uhm... osa intendi per visuale? un sql builder? -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From simone a tomato.it Mon Feb 26 17:55:37 2007 From: simone a tomato.it (Simone Fumagalli) Date: Mon Feb 26 18:19:18 2007 Subject: [Db] Tool creazione viste MySQL In-Reply-To: <45E30B16.2050903@pleiade.it> References: <45E30177.4050309@tomato.it> <45E30B16.2050903@pleiade.it> Message-ID: <45E31109.2040803@tomato.it> Si, come il pannello di controllo di MS-SQL. Simone Domenico L. wrote: > Simone Fumagalli ha scritto: > uhm... osa intendi per visuale? un sql builder? From simone a tomato.it Mon Feb 26 18:11:26 2007 From: simone a tomato.it (Simone Fumagalli) Date: Mon Feb 26 18:35:06 2007 Subject: [Db] Tool creazione viste MySQL In-Reply-To: <45E30B16.2050903@pleiade.it> References: <45E30177.4050309@tomato.it> <45E30B16.2050903@pleiade.it> Message-ID: <45E314BE.6030508@tomato.it> Ho trovato questo, qualcuno lo conosce ? L'ho scaricato e installato, ma non parte. Simone Domenico L. wrote: > uhm... osa intendi per visuale? un sql builder? From simone a tomato.it Mon Feb 26 18:17:23 2007 From: simone a tomato.it (Simone Fumagalli) Date: Mon Feb 26 18:41:03 2007 Subject: [Db] Tool creazione viste MySQL In-Reply-To: <45E314BE.6030508@tomato.it> References: <45E30177.4050309@tomato.it> <45E30B16.2050903@pleiade.it> <45E314BE.6030508@tomato.it> Message-ID: <45E31623.7080902@tomato.it> scusate, dimenticavo : http://www.navicat.com/detail.html Simone Simone Fumagalli wrote: > Ho trovato questo, qualcuno lo conosce ? > > L'ho scaricato e installato, ma non parte. From domenico.lorusso a pleiade.it Tue Feb 27 09:45:35 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Tue Feb 27 10:08:23 2007 Subject: [Db] Tool creazione viste MySQL In-Reply-To: <45E31623.7080902@tomato.it> References: <45E30177.4050309@tomato.it> <45E30B16.2050903@pleiade.it> <45E314BE.6030508@tomato.it> <45E31623.7080902@tomato.it> Message-ID: <45E3EFAF.8040007@pleiade.it> Simone Fumagalli ha scritto: >> Ho trovato questo, qualcuno lo conosce ? >> >> L'ho scaricato e installato, ma non parte. > uhm.. no.. sarà che i sql-builder non mi piacciono, preferisco farmi le select a mano :-) cmq anche phpmyadmin ha un sqlbuilder :-) ciao -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From lookdown a gmail.com Tue Feb 27 12:20:34 2007 From: lookdown a gmail.com (Marco Guardabasso) Date: Tue Feb 27 12:45:44 2007 Subject: [Db] Access - campo memo troncato su union Message-ID: <30a934720702270320p1b564f5clc981be0565704753@mail.gmail.com> Ciao a tutti. Ho un db in access (sì, lo so...) con due tabelle, diciamo Mele e Pere: con una union mi estraggo i campi da Mele e quelli da Pere e su questi faccio una select al volo, ordinandoli per un campo (mettiamo, per esempio, una data). Fin qui, tutto benissimo. Il problema è che Pere ha un campo Memo che al momento della union viene inesorabilmente troncato a 255 caratteri... la mia domanda, quindi è: al momento in cui vado a creare la union, c'è modo di specificare il tipo o comunque la lunghezza di un campo della stessa? O devo per forza farmi una tabella "fisica" con i campi come voglio io, e lavorare su quella? Spero di essere stato chiaro, grazie per l'attenzione. Marco -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20070227/a50c0c42/attachment.html From lookdown a gmail.com Tue Feb 27 12:22:15 2007 From: lookdown a gmail.com (Marco Guardabasso) Date: Tue Feb 27 12:47:34 2007 Subject: [Db] Re: Access - campo memo troncato su union In-Reply-To: <30a934720702270320p1b564f5clc981be0565704753@mail.gmail.com> References: <30a934720702270320p1b564f5clc981be0565704753@mail.gmail.com> Message-ID: <30a934720702270322p51f9d696me4edc388c1a70847@mail.gmail.com> Pardon, ho dimenticato di dire che l'estrazione avviene tramite pagina asp. Marco Il 27/02/07, Marco Guardabasso ha scritto: > > Ciao a tutti. > > Ho un db in access (sì, lo so...) con due tabelle, diciamo Mele e Pere: > con una union mi estraggo i campi da Mele e quelli da Pere e su questi > faccio una select al volo, ordinandoli per un campo (mettiamo, per esempio, > una data). > > Fin qui, tutto benissimo. > > Il problema è che Pere ha un campo Memo che al momento della union viene > inesorabilmente troncato a 255 caratteri... la mia domanda, quindi è: al > momento in cui vado a creare la union, c'è modo di specificare il tipo o > comunque la lunghezza di un campo della stessa? > O devo per forza farmi una tabella "fisica" con i campi come voglio io, e > lavorare su quella? > > Spero di essere stato chiaro, grazie per l'attenzione. > > Marco > -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20070227/f1d4ce14/attachment.htm From domenico.lorusso a pleiade.it Tue Feb 27 12:37:22 2007 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Tue Feb 27 13:00:31 2007 Subject: [Db] Re: Access - campo memo troncato su union In-Reply-To: <30a934720702270322p51f9d696me4edc388c1a70847@mail.gmail.com> References: <30a934720702270320p1b564f5clc981be0565704753@mail.gmail.com> <30a934720702270322p51f9d696me4edc388c1a70847@mail.gmail.com> Message-ID: <45E417F2.3040603@pleiade.it> Marco Guardabasso ha scritto: > Pardon, ho dimenticato di dire che l'estrazione avviene tramite pagina > asp. > prova a cambiare l'ordine di union... -- Domenico L. icq: 645 44 861 per stupire mezz'ora basta un libro di storia, io cercai di imparare la Treccani a memoria... [F.d.A.] From lookdown a gmail.com Tue Feb 27 12:47:58 2007 From: lookdown a gmail.com (Marco Guardabasso) Date: Tue Feb 27 13:13:06 2007 Subject: [Db] Re: Access - campo memo troncato su union In-Reply-To: <45E417F2.3040603@pleiade.it> References: <30a934720702270320p1b564f5clc981be0565704753@mail.gmail.com> <30a934720702270322p51f9d696me4edc388c1a70847@mail.gmail.com> <45E417F2.3040603@pleiade.it> Message-ID: <30a934720702270347mdc59615m6b163d5daa69ec40@mail.gmail.com> Il 27/02/07, Domenico L. ha scritto: > > prova a cambiare l'ordine di union... > Cambiato nulla. :-( Marco -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20070227/a0a78400/attachment-0001.html From cristiano a verondini.it Tue Feb 27 14:41:42 2007 From: cristiano a verondini.it (Cristiano Verondini) Date: Tue Feb 27 15:08:33 2007 Subject: [Db] Re: Access - campo memo troncato su union References: <30a934720702270320p1b564f5clc981be0565704753@mail.gmail.com> <30a934720702270322p51f9d696me4edc388c1a70847@mail.gmail.com> Message-ID: <003901c75a75$0771f210$6301a8c0@IdeaFutura.local> Pardon, ho dimenticato di dire che l'estrazione avviene tramite pagina asp. La prima select dovrebbe decidere il tipo dei campi. che succede se provi a castare verso longtext il campo che crea problemi in tutte le select? Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20070227/ce5bb34b/attachment.html From lookdown a gmail.com Tue Feb 27 14:57:36 2007 From: lookdown a gmail.com (Marco Guardabasso) Date: Tue Feb 27 15:22:47 2007 Subject: [Db] Re: Access - campo memo troncato su union In-Reply-To: <003901c75a75$0771f210$6301a8c0@IdeaFutura.local> References: <30a934720702270320p1b564f5clc981be0565704753@mail.gmail.com> <30a934720702270322p51f9d696me4edc388c1a70847@mail.gmail.com> <003901c75a75$0771f210$6301a8c0@IdeaFutura.local> Message-ID: <30a934720702270557l15ae93bapd416c2d2ea2c38c1@mail.gmail.com> Il 27/02/07, Cristiano Verondini ha scritto: > > La prima select dovrebbe decidere il tipo dei campi. che succede se > provi a castare verso longtext il campo che crea problemi in tutte le > select? > In access non esiste il cast... solo cint e clng che ovviametne non vanno bene. Marco -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20070227/4beecac9/attachment.htm