From dierre a dierrelabs.org Sat Dec 2 10:45:48 2006 From: dierre a dierrelabs.org (DierRe) Date: Sat Dec 2 10:54:37 2006 Subject: [Db] verifica esistenza di una tabella Message-ID: <2f5f89560612020145r64c546a6r3b32a41b908034d9@mail.gmail.com> Salve, sto usando mysql. Devo fare una specie di installer in php, e per verificare che lo script fosse già installato volevo verificare l'esistenza di un campo di una tabella che dovrebbe essere aggiunta nel caso ancora non sia installato lo script. La domanda è: come posso fare? Lo chiedo perché facendo una select ovviamente mi da errore in output la libreria per la connessione che sto usando. -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20061202/fcae7fa9/attachment.htm From giovanni.cappellini a gmail.com Sat Dec 2 11:06:55 2006 From: giovanni.cappellini a gmail.com (Giovanni Cappellini) Date: Sat Dec 2 11:15:33 2006 Subject: [Db] verifica esistenza di una tabella In-Reply-To: <2f5f89560612020145r64c546a6r3b32a41b908034d9@mail.gmail.com> References: <2f5f89560612020145r64c546a6r3b32a41b908034d9@mail.gmail.com> Message-ID: <4571503F.6050408@gmail.com> DierRe wrote: > Salve, sto usando mysql. > Devo fare una specie di installer in php, e per verificare che lo script > fosse già installato volevo verificare l'esistenza di un campo di una > tabella che dovrebbe essere aggiunta nel caso ancora non sia installato > lo script. La domanda è: come posso fare? Lo chiedo perché facendo una > select ovviamente mi da errore in output la libreria per la connessione > che sto usando. Per conoscere i campi di una tabella: SHOW COLUMNS FROM `tabella` From dierre a dierrelabs.org Sat Dec 2 15:26:12 2006 From: dierre a dierrelabs.org (DierRe) Date: Sat Dec 2 15:35:04 2006 Subject: [Db] verifica esistenza di una tabella In-Reply-To: <4571503F.6050408@gmail.com> References: <2f5f89560612020145r64c546a6r3b32a41b908034d9@mail.gmail.com> <4571503F.6050408@gmail.com> Message-ID: <2f5f89560612020626w7d54f96aqd353b3395b27909f@mail.gmail.com> 2006/12/2, Giovanni Cappellini : > > DierRe wrote: > > Salve, sto usando mysql. > > Devo fare una specie di installer in php, e per verificare che lo script > > fosse già installato volevo verificare l'esistenza di un campo di una > > tabella che dovrebbe essere aggiunta nel caso ancora non sia installato > > lo script. La domanda è: come posso fare? Lo chiedo perché facendo una > > select ovviamente mi da errore in output la libreria per la connessione > > che sto usando. > > Per conoscere i campi di una tabella: > > SHOW COLUMNS FROM `tabella` > _______________________________________________ > Db mailing list > Db@lists.ziobudda.net > http://lists.ziobudda.net/mailman/listinfo/db > Molte grazie :) -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20061202/c9531a63/attachment.html From simone a tomato.it Mon Dec 11 14:19:03 2006 From: simone a tomato.it (Simone Fumagalli) Date: Mon Dec 11 14:28:48 2006 Subject: [Db] Tool comparazione DB Message-ID: <457D5AC7.2030806@tomato.it> Ciao, qualcuno conosce e ha esperienza su tool per comparare 2 DB MySql ? Mi serve un tool che mi permetta di confrontare struttura e/o dati di 2 database che stanno su due macchine diverse ed applicare le modifica in una o nell'altra direzione Grazie Simone From domenico.lorusso a pleiade.it Mon Dec 11 14:42:09 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 11 14:50:33 2006 Subject: [Db] Tool comparazione DB In-Reply-To: <457D5AC7.2030806@tomato.it> References: <457D5AC7.2030806@tomato.it> Message-ID: <457D6031.1080201@pleiade.it> Simone Fumagalli ha scritto: > > qualcuno conosce e ha esperienza su tool per comparare 2 DB MySql ? > > Mi serve un tool che mi permetta di confrontare struttura e/o dati di > 2 database che stanno su due macchine diverse ed applicare le modifica > in una o nell'altra direzione > > nope però se lo trovi servirebbe anche a me, tuttavia non vedo l'utilità di comparare i dati... se i dati devono essere uguali non conviene esportare da una parte e reimportare dall'altra? -- 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 Dec 11 14:51:41 2006 From: simone a tomato.it (Simone Fumagalli) Date: Mon Dec 11 15:01:25 2006 Subject: [Db] Tool comparazione DB In-Reply-To: <457D6031.1080201@pleiade.it> References: <457D5AC7.2030806@tomato.it> <457D6031.1080201@pleiade.it> Message-ID: <457D626D.2000500@tomato.it> Domenico L. wrote: > nope però se lo trovi servirebbe anche a me, tuttavia non vedo l'utilità > di comparare i dati... se i dati devono essere uguali non conviene > esportare da una parte e reimportare dall'altra? Si, ma spesso mi è utile sapere quante e *quali* righe sono cambiate e magari selezionare quelle da aggiornare. Simone From michel a ziobudda.net Mon Dec 11 15:07:10 2006 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Mon Dec 11 15:17:31 2006 Subject: [Db] Tool comparazione DB In-Reply-To: <457D626D.2000500@tomato.it> References: <457D5AC7.2030806@tomato.it> <457D6031.1080201@pleiade.it> <457D626D.2000500@tomato.it> Message-ID: <457D660E.2060205@ziobudda.net> Simone Fumagalli ha scritto: > > Si, ma spesso mi è utile sapere quante e *quali* righe sono cambiate e > magari selezionare quelle da aggiornare. Fare un replica del db ? M. -- Michel 'ZioBudda' Morelli michel@ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-0240706096 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it From ml a tassoman.com Mon Dec 11 15:06:56 2006 From: ml a tassoman.com (Tassoman (mailing)) Date: Mon Dec 11 15:17:51 2006 Subject: [Db] Ma... sqlite? Fa proprio =?iso-8859-1?q?cos=EC?= schifo? Message-ID: <1165846016.6410.32.camel@localhost> Perché sqlite si usa poco in ambito web? Mi riferisco specialmente all'ambiente PHP. Per applicazioni semplici, tipo rubriche/minisiti, non sarebbe l'ideale? -- Blogging humanum est, Tassoman ovest. http://blog.tassoman.com From michel a ziobudda.net Mon Dec 11 15:11:23 2006 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Mon Dec 11 15:21:47 2006 Subject: [Db] Ma... sqlite? Fa proprio =?ISO-8859-15?Q?cos=EC_schif?= =?ISO-8859-15?Q?o=3F?= In-Reply-To: <1165846016.6410.32.camel@localhost> References: <1165846016.6410.32.camel@localhost> Message-ID: <457D670B.5050404@ziobudda.net> Tassoman (mailing) ha scritto: > Perché sqlite si usa poco in ambito web? Mi riferisco specialmente > all'ambiente PHP. > > Per applicazioni semplici, tipo rubriche/minisiti, non sarebbe l'ideale? > SQlite è disponibile all'interno del core di PHP solo dalla versione 5. Nelle precedenti versioni era utilizzabile solamente come estensione da caricare a runtime. E per ora i provider che offrono php5 sono ancora pochi, men che meno quelli che ti permetto di inserire estensioni esterne da caricare a runtime. M. -- Michel 'ZioBudda' Morelli michel@ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-0240706096 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it From cristiano a verondini.it Mon Dec 11 16:35:14 2006 From: cristiano a verondini.it (Cristiano Verondini) Date: Mon Dec 11 16:45:32 2006 Subject: =?UTF-8?Q?Re:_=5BDb=5D_Ma..._sqlite=3F_Fa_propri?= =?UTF-8?Q?o_cos=C3=AC_schifo=3F?= References: <1165846016.6410.32.camel@localhost> Message-ID: <024e01c71d39$f82c4260$6301a8c0@IdeaFutura.local> >> Perché sqlite si usa poco in ambito web? Mi riferisco specialmente >> all'ambiente PHP. E' poco diffuso perchè è presente come estensione da compilare a aprte con PHP4, mentre col 5 esiste di default. Inoltre, non essendo un db server ha delle pesanti limitazioni per quello che riguarda la concorrenza. Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From AlberT a superalbert.it Tue Dec 12 10:48:31 2006 From: AlberT a superalbert.it (Emiliano Gabrielli (aka AlberT)) Date: Tue Dec 12 11:01:07 2006 Subject: [Db] Ma... sqlite? Fa proprio =?iso-8859-15?q?cos=EC?= schifo? In-Reply-To: <024e01c71d39$f82c4260$6301a8c0@IdeaFutura.local> References: <1165846016.6410.32.camel@localhost> <024e01c71d39$f82c4260$6301a8c0@IdeaFutura.local> Message-ID: <200612121048.31693.AlberT@superalbert.it> On Monday 11 December 2006 16:35, Cristiano Verondini wrote: > la concorrenza. che in regime di libero mercato ... :-P -- From gianiaz a gianiaz.net Tue Dec 12 12:53:23 2006 From: gianiaz a gianiaz.net (Giovanni Battista Lenoci) Date: Tue Dec 12 13:04:06 2006 Subject: [Db] Progettare una tabella per =?iso-8859-15?q?periodicit=E0_eventi?= =?iso-8859-15?q?=2E=2E=2E?= In-Reply-To: <457E96D8.8090006@gianiaz.net> References: <457E96D8.8090006@gianiaz.net> Message-ID: <457E9833.40903@gianiaz.net> Ciao ragazzi, vorrei un vostro consiglio su come creare una tabella per gestire la periodicità di un evento, di una rivista o qualsiasi altra cosa... Avevo pensato di prendere come spunto il modo in cui viene gestito cron, però in realtà ho paura di complicarmi la vita, perchè il dato non può essere solo "intero" nel caso ad esempio della descrizione di un evento ripetitivo bimestrale. In crontab abbiamo una struttura del genere: s1 s2 s3 s4 s5 "s1" rappresenta i minuti. I valori permessi vanno da 0 a 59. "s2" rappresenta le ore. I valori permessi vanno da 0 a 23. "s3" rappresenta i giorni all'interno di un mese. I valori permessi vanno da 1 a 31. "s4" rappresenta i mesi. I valori permessi vanno da 1 a 12 (piu' i nomi in lettere). "s5" rappresenta i giorni della settimana. I valori permessi vanno da 0 a 7 In crontab lo faccio mettendo nel campo s4 2,4,6,8,10,12 oppure */2. In db ho paura che questa cosa sarebbe un po' confusionaria, e comunque dovrei poi scrivermi tutti i metodi per fare il parsing del contenuto... Avete già affrontato una cosa del genere? Avete visto dei codici scritti bene? (pensavo alla gestione degli eventi di drupal..) Come sempre nel nostro lavoro ho pochissimo tempo, e vorrei trovare una soluzione funzionale ma anche economica... Ciao e grazie -- gianiaz.net di Giovanni Battista Lenoci P.le Bertacchi 66 23100 Sondrio cell. +39.392.7096936 From domenico.lorusso a pleiade.it Tue Dec 12 14:42:27 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Tue Dec 12 14:51:17 2006 Subject: [Db] Progettare una tabella per =?ISO-8859-15?Q?periodicit=E0?= =?ISO-8859-15?Q?_eventi=2E=2E=2E?= In-Reply-To: <457E9833.40903@gianiaz.net> References: <457E96D8.8090006@gianiaz.net> <457E9833.40903@gianiaz.net> Message-ID: <457EB1C3.90208@pleiade.it> Giovanni Battista Lenoci ha scritto: > Ciao ragazzi, vorrei un vostro consiglio su come creare una tabella > per gestire la periodicità di un evento, di una rivista o qualsiasi > altra cosa... Uhm... hai mai visto l'utilizzo di interval in sql? L'idea è quella di definire una data di partenza come (cron tab) e un intervallo. PHP non da un buon supporto alle date e neppure i dbms se per questo ma già di più. una cosa come: nomeEvento varchar incremento int unita string funzione string funzione dovrebbe essere una del db... di che db stai parlando? -- 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 gianiaz a gianiaz.net Tue Dec 12 14:43:42 2006 From: gianiaz a gianiaz.net (Giovanni Battista Lenoci) Date: Tue Dec 12 14:54:25 2006 Subject: [Db] Progettare una tabella per =?ISO-8859-15?Q?periodicit=E0?= =?ISO-8859-15?Q?_eventi=2E=2E=2E?= In-Reply-To: <457EB1C3.90208@pleiade.it> References: <457E96D8.8090006@gianiaz.net> <457E9833.40903@gianiaz.net> <457EB1C3.90208@pleiade.it> Message-ID: <457EB20E.1060807@gianiaz.net> Domenico L. ha scritto: > Giovanni Battista Lenoci ha scritto: >> Ciao ragazzi, vorrei un vostro consiglio su come creare una tabella >> per gestire la periodicità di un evento, di una rivista o qualsiasi >> altra cosa... > > Uhm... hai mai visto l'utilizzo di interval in sql? Purtroppo no.. > L'idea è quella di definire una data di partenza come (cron tab) e un > intervallo. PHP non da un buon supporto alle date e neppure i dbms se > per questo ma già di più. > > una cosa come: > > nomeEvento varchar > incremento int > unita string > funzione string > > funzione dovrebbe essere una del db... di che db stai parlando? Non ho capito, comunque uso Mysql 5. Grazie -- gianiaz.net di Giovanni Battista Lenoci P.le Bertacchi 66 23100 Sondrio cell. +39.392.7096936 From domenico.lorusso a pleiade.it Tue Dec 12 14:51:50 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Tue Dec 12 15:00:20 2006 Subject: [Db] Progettare una tabella per =?ISO-8859-15?Q?periodicit=E0?= =?ISO-8859-15?Q?_eventi=2E=2E=2E?= In-Reply-To: <457EB20E.1060807@gianiaz.net> References: <457E96D8.8090006@gianiaz.net> <457E9833.40903@gianiaz.net> <457EB1C3.90208@pleiade.it> <457EB20E.1060807@gianiaz.net> Message-ID: <457EB3F6.4080001@pleiade.it> Giovanni Battista Lenoci ha scritto: > Non ho capito, comunque uso Mysql 5. http://www.databasejournal.com/features/mysql/article.php/2190421 Dovrebbe darti un'idea Sfruttano il supporto al tempo dei dbms che è scarso ma migliore di quello di php ti proporrei di crearti delle stored procedure in mysql che leggano i campi della tabella definizione e creino l'sql per fare l'insert nella tabella eventi Non mi dilungo troppo per non annegare di informazioni, cmq chiedi pure :-) -- 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 gianiaz a gianiaz.net Tue Dec 12 14:54:26 2006 From: gianiaz a gianiaz.net (Giovanni Battista Lenoci) Date: Tue Dec 12 15:05:10 2006 Subject: [Db] Progettare una tabella per =?ISO-8859-15?Q?periodicit=E0?= =?ISO-8859-15?Q?_eventi=2E=2E=2E?= In-Reply-To: <457EB3F6.4080001@pleiade.it> References: <457E96D8.8090006@gianiaz.net> <457E9833.40903@gianiaz.net> <457EB1C3.90208@pleiade.it> <457EB20E.1060807@gianiaz.net> <457EB3F6.4080001@pleiade.it> Message-ID: <457EB492.8030902@gianiaz.net> Domenico L. ha scritto: > http://www.databasejournal.com/features/mysql/article.php/2190421 > > Dovrebbe darti un'idea > > Sfruttano il supporto al tempo dei dbms che è scarso ma migliore di > quello di php ti proporrei di crearti delle stored procedure in mysql > che leggano i campi della tabella definizione e creino l'sql per fare > l'insert nella tabella eventi > > Non mi dilungo troppo per non annegare di informazioni, cmq chiedi > pure :-) Grazie, intanto comincio a leggere, ho paura che mi porterà via + tempo di quello che pensavo :-(. -- gianiaz.net di Giovanni Battista Lenoci P.le Bertacchi 66 23100 Sondrio cell. +39.392.7096936 From domenico.lorusso a pleiade.it Tue Dec 12 15:45:55 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Tue Dec 12 15:54:57 2006 Subject: [Db] Progettare una tabella per =?ISO-8859-15?Q?periodicit=E0?= =?ISO-8859-15?Q?_eventi=2E=2E=2E?= In-Reply-To: <457EB492.8030902@gianiaz.net> References: <457E96D8.8090006@gianiaz.net> <457E9833.40903@gianiaz.net> <457EB1C3.90208@pleiade.it> <457EB20E.1060807@gianiaz.net> <457EB3F6.4080001@pleiade.it> <457EB492.8030902@gianiaz.net> Message-ID: <457EC0A3.8050701@pleiade.it> Giovanni Battista Lenoci ha scritto: > Domenico L. ha scritto: >> >> Non mi dilungo troppo per non annegare di informazioni, cmq chiedi >> pure :-) > Grazie, intanto comincio a leggere, ho paura che mi porterà via + > tempo di quello che pensavo :-(. > fai conto snodgrass sono 10-15 anni che ha proposto una soluzione alla iso ma l'hanno giudicata troppo complicata... Il tempo è il peggior elemento da gestire perché non è mai (o quasi) discreto. Il problema è che fare un approccio frettoloso poi ti crea mille problemi, meglio pensarci su bene, con calma, non aver paura ad utilizzare spazio e portarsi dietro le chiavi per evitare aumenti esponenziali della complessità nel codice sql. Ciao. P.S. sei nel caso facile: ogni x tempo partendo da "inizio" si verifica l'evento o sei nel caso difficile, es.: ogni primo lunedì del mese, il primo lunedì non festivo, ecc..:-) -- 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 gianiaz a gianiaz.net Tue Dec 12 15:53:50 2006 From: gianiaz a gianiaz.net (Giovanni Battista Lenoci) Date: Tue Dec 12 16:04:34 2006 Subject: [Db] Progettare una tabella per =?ISO-8859-15?Q?periodicit=E0?= =?ISO-8859-15?Q?_eventi=2E=2E=2E?= In-Reply-To: <457EC0A3.8050701@pleiade.it> References: <457E96D8.8090006@gianiaz.net> <457E9833.40903@gianiaz.net> <457EB1C3.90208@pleiade.it> <457EB20E.1060807@gianiaz.net> <457EB3F6.4080001@pleiade.it> <457EB492.8030902@gianiaz.net> <457EC0A3.8050701@pleiade.it> Message-ID: <457EC27E.1000808@gianiaz.net> Domenico L. ha scritto: > sei nel caso facile: ogni x tempo partendo da "inizio" si verifica > l'evento > o sei nel caso difficile, es.: ogni primo lunedì del mese, il primo > lunedì non festivo, ecc..:-) Un po' in tutti e due, ma + nel secondo che nel primo... e te pareva.... :( Grazie per il supporto -- gianiaz.net di Giovanni Battista Lenoci P.le Bertacchi 66 23100 Sondrio cell. +39.392.7096936 From gabriele a neobeta.com Mon Dec 25 23:16:22 2006 From: gabriele a neobeta.com (Gabriele) Date: Sun Dec 17 23:28:11 2006 Subject: [Db] [Mysql] Record distinti Message-ID: <45904DB6.8070707@neobeta.com> Salve a tutti, ho il seguente problema e non ne vengo a capo, quindi chiedo a voi: (semplifico utilizzando un esempio) Ho questa query: SELECT valore1, valore2, valore 3 FROM tabella ORDER BY valore3 DESC Fino a qua ovviamente tutto ok. I problemi arrivano nel momento in cui io voglia avere nell'output della query il valore1 come univoco. Utilizzando la funzione DISTINCT, questa agisce su tutti i campi e, avendo comunque valori diversi negli altri 2 campi, ottengo lo stesso output di prima. Usando GROUP BY VALORE1 invece ottengo un valore univoco rispetto al campo valore 1, ma perdo l'ordinamento. Come posso fare per "salvare capra e cavoli"??? Grazie a tutti Gabriele From leodav a tiscali.it Mon Dec 18 10:02:35 2006 From: leodav a tiscali.it (Leonardo) Date: Mon Dec 18 10:12:28 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <45904DB6.8070707@neobeta.com> References: <45904DB6.8070707@neobeta.com> Message-ID: <200612181002.35672.leodav@tiscali.it> Alle 23:16, lunedì 25 dicembre 2006, Gabriele ha scritto: > Salve a tutti, > ho il seguente problema e non ne vengo a capo, quindi chiedo a voi: > (semplifico utilizzando un esempio) > > Ho questa query: > > SELECT valore1, valore2, valore 3 FROM tabella ORDER BY valore3 DESC > > Fino a qua ovviamente tutto ok. I problemi arrivano nel momento in cui > io voglia avere nell'output della query il valore1 come univoco. > Utilizzando la funzione DISTINCT, questa agisce su tutti i campi e, > avendo comunque valori diversi negli altri 2 campi, ottengo lo stesso > output di prima. Usando GROUP BY VALORE1 invece ottengo un valore > univoco rispetto al campo valore 1, ma perdo l'ordinamento. > Come posso fare per "salvare capra e cavoli"??? > Grazie a tutti in mysql5 dovrebbe funzionare questo SELECT valore1, valore2, valore 3 FROM tabella WHERE valore1 IN (SELECT DISTINCT valore1 FROM tabella ) Ciao Lenardo From domenico.lorusso a pleiade.it Mon Dec 18 10:18:14 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 10:27:40 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <45904DB6.8070707@neobeta.com> References: <45904DB6.8070707@neobeta.com> Message-ID: <45865CD6.8050108@pleiade.it> Gabriele ha scritto: > Ho questa query: > > SELECT valore1, valore2, valore 3 FROM tabella ORDER BY valore3 DESC > > Fino a qua ovviamente tutto ok. I problemi arrivano nel momento in cui > io voglia avere nell'output della query il valore1 come univoco. > Utilizzando la funzione DISTINCT, questa agisce su tutti i campi e, > avendo comunque valori diversi negli altri 2 campi, ottengo lo stesso > output di prima. Detto così vuoi qualcosa di assurdo... :-) cosa ti serve? raggruppare su valore1 e applicare una funzione di aggregazione (sum, count ecc) sugli altri? In questo caso fai un group by e un order by e risolvi altrimenti non ho capito :-\ -- 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 gabriele a neobeta.com Tue Dec 26 10:24:13 2006 From: gabriele a neobeta.com (Gabriele) Date: Mon Dec 18 10:36:09 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <45865CD6.8050108@pleiade.it> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> Message-ID: <4590EA3D.50609@neobeta.com> Domenico L. wrote: > Gabriele ha scritto: >> Ho questa query: >> >> > Detto così vuoi qualcosa di assurdo... :-) > > cosa ti serve? raggruppare su valore1 e applicare una funzione di > aggregazione (sum, count ecc) sugli altri? > > In questo caso fai un group by e un order by e risolvi altrimenti non > ho capito :-\ > > Ho una tabella del genere: valore1 valore2 valore3 89 2 34.67 23 4 67.89 21 3 34.89 90 4 35.67 23 4 56.89 21 9 56.78 ............ ........ ........... Vorrei una select che mi tirasse fuori questo: valore1 valore2 valore3 23 4 67.89 21 9 56.78 90 4 35.67 89 2 34.67 Spero che l'esempio sia stato chiarificatore... :-) Gabriele P.S: Ho a disposizione mysql 4 From marcello a vezz.it Mon Dec 18 10:28:23 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 10:40:13 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4590EA3D.50609@neobeta.com> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> <4590EA3D.50609@neobeta.com> Message-ID: <45865F37.5040300@vezz.it> Gabriele ha scritto: > Ho una tabella del genere: > valore1 valore2 valore3 > 89 2 34.67 > 23 4 67.89 > 21 3 34.89 > 90 4 35.67 > 23 4 56.89 > 21 9 56.78 > ............ ........ ........... > > Vorrei una select che mi tirasse fuori questo: > > valore1 valore2 valore3 > 23 4 67.89 > 21 9 56.78 > 90 4 35.67 > 89 2 34.67 > > Spero che l'esempio sia stato chiarificatore... :-) In base a cosa sulla riga del 21 vuoi 9 e non 3 ? Ciao Marcello From gabriele a neobeta.com Tue Dec 26 10:37:54 2006 From: gabriele a neobeta.com (Gabriele) Date: Mon Dec 18 10:49:50 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <45865F37.5040300@vezz.it> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> <4590EA3D.50609@neobeta.com> <45865F37.5040300@vezz.it> Message-ID: <4590ED72.5020506@neobeta.com> Marcello Vezzelli wrote: > Gabriele ha scritto: > >> Spero che l'esempio sia stato chiarificatore... :-) >> > > In base a cosa sulla riga del 21 vuoi 9 e non 3 ? > > > Scusa.... a nulla... ho messo quel valore per simboleggiare la presenza di altri campi e dell'impossibilità di usare una distinct classica. E' il valore 3 che determina l'ordinamento e il fatto di prendere o non prendere un record con un valore1 ben distinto. Ho provato ad usare la funzione max sul valore3, ma non ha funzionato: ipotizzo per il fatto che ho una varchar nella colonna del valore3, sbaglio? From michel a ziobudda.net Mon Dec 18 10:43:47 2006 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Mon Dec 18 10:55:34 2006 Subject: [Db] Meglio una tabella o una vista ? Message-ID: <458662D3.2050401@ziobudda.net> Ciao all. Con l'avvento di mysql5 sono arrivate le store procedure e le views. Ora mi pongo una domanda in questa situazione: ho una tabella da 100.000 record (numero a caso) e su questa faccio molte operazioni di select su un campo categoria. La domanda è: meglio una query sulla tabella da 100.000 record oppure la creazione di una views (vista) dove fare tutte le operazioni riguardanti una categoria ben precisa ? Se al posto di 100.000 record ne avessi 1.000.000 ? Grazie e ciao. M. -- Michel 'ZioBudda' Morelli michel@ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-0240706096 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it From marcello a vezz.it Mon Dec 18 10:49:15 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 11:01:06 2006 Subject: [Db] Meglio una tabella o una vista ? In-Reply-To: <458662D3.2050401@ziobudda.net> References: <458662D3.2050401@ziobudda.net> Message-ID: <4586641B.2060709@vezz.it> Davide Michel 'ZioBudda' Morelli ha scritto: > Ora mi pongo una domanda in questa situazione: ho una tabella da > 100.000 record (numero a caso) e su questa faccio molte operazioni di > select su un campo categoria. > La domanda è: meglio una query sulla tabella da 100.000 record oppure > la creazione di una views (vista) dove fare tutte le operazioni > riguardanti una categoria ben precisa ? > Se al posto di 100.000 record ne avessi 1.000.000 ? E' da un po' che uso le viste su mysql 5 e così a occhio non c'è una gran differenza di prestazioni. Ho la sensazione che vengano trattate come una query "precotta". Onestamente però non ho superato il migliaio di record... quindi magari la differenza si vede + avanti. Varrebbe la pena fare qualche test su una tabella "grossa"... quasi quasi sbatto 100K record pseudocasuali in una tabella e faccio due verifiche. Penso sia educativo. Quel che ho notato è che solo le ultime versioni di mysqldump fanno il dump correttamente delle viste... prima l'import dava errore a mezza via perché il codice di creazione della vista era sbagliato. Idem phpmyadmin. Ciao Marcello From lfalvo a logos.net Mon Dec 18 10:50:30 2006 From: lfalvo a logos.net (Luca Falvo) Date: Mon Dec 18 11:02:35 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4590ED72.5020506@neobeta.com> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> <4590EA3D.50609@neobeta.com> <45865F37.5040300@vezz.it> <4590ED72.5020506@neobeta.com> Message-ID: <6.2.1.2.2.20061218104701.0326b120@mail.logos.net> >... funzione max sul valore3, ma non ha funzionato: ipotizzo per il fatto >che ho una varchar nella colonna del valore3, sbaglio? direi che questo fa al caso tuo: SELECT val1, val2, max(val3) FROM `test` group by val1 per quanto riguarda il campo varchar, non è ostativo all'ottenimento di un risultato, solo che l'ordinamento può risultare diverso da quello che ti aspetti. prova a mettere uno spazio oppure uno zero davanti e te ne accorgerai. non sarebbe stato meglio usare un decimal? Ciao. Luca From marcello a vezz.it Mon Dec 18 10:52:37 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 11:04:58 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4590EA3D.50609@neobeta.com> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> <4590EA3D.50609@neobeta.com> Message-ID: <458664E5.7080406@vezz.it> Gabriele ha scritto: > Domenico L. wrote: >> Gabriele ha scritto: >>> Ho questa query: >>> >>> >> Detto così vuoi qualcosa di assurdo... :-) >> >> cosa ti serve? raggruppare su valore1 e applicare una funzione di >> aggregazione (sum, count ecc) sugli altri? >> >> In questo caso fai un group by e un order by e risolvi altrimenti non >> ho capito :-\ >> >> > Ho una tabella del genere: > valore1 valore2 valore3 > 89 2 34.67 > 23 4 67.89 > 21 3 34.89 > 90 4 35.67 > 23 4 56.89 > 21 9 56.78 > ............ ........ ........... > > Vorrei una select che mi tirasse fuori questo: > > valore1 valore2 valore3 > 23 4 67.89 > 21 9 56.78 > 90 4 35.67 > 89 2 34.67 > > Spero che l'esempio sia stato chiarificatore... :-) > > Gabriele > > P.S: Ho a disposizione mysql 4 > > _______________________________________________ > Db mailing list > Db@lists.ziobudda.net > http://lists.ziobudda.net/mailman/listinfo/db > > > aggiusta la data del pc che sei dopo natale!!! Ciao From domenico.lorusso a pleiade.it Mon Dec 18 11:05:28 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 11:15:01 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4590ED72.5020506@neobeta.com> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> <4590EA3D.50609@neobeta.com> <45865F37.5040300@vezz.it> <4590ED72.5020506@neobeta.com> Message-ID: <458667E8.2060302@pleiade.it> Gabriele ha scritto: > Marcello Vezzelli wrote: >> Gabriele ha scritto: >> >>> Spero che l'esempio sia stato chiarificatore... :-) >>> >> >> In base a cosa sulla riga del 21 vuoi 9 e non 3 ? >> >> >> > Scusa.... a nulla... ho messo quel valore per simboleggiare la > presenza di altri campi e dell'impossibilità di usare una distinct > classica. E' il valore 3 che determina l'ordinamento e il fatto di > prendere o non prendere un record con un valore1 ben distinto. Ho > provato ad usare la funzione max sul valore3, ma non ha funzionato: > ipotizzo per il fatto che ho una varchar nella colonna del valore3, > sbaglio? > > io continuo a non capire cosa vuoi ottenere, cmq la distinct ti permette di estrarre record distinti, sarebbe in teoria possibile lavorare sui singoli attributi la non so se mysql lo supporta e soprattuto non credo ti serva. La group by ti permette di raggruppare su un certo numero di attributi (e questi attributi saranno quindi distinti) e di aggreare in qualche modo gli altri, tipico il conteggio piuttosto che la somma. In fondo a qualsiasi query è poi possibile specificare una clausola di ordinamento Altro non si può fare... Saluti -- 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 michel a ziobudda.net Mon Dec 18 11:12:14 2006 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Mon Dec 18 11:24:08 2006 Subject: [Db] Store procedure mysql5 ricorsive Message-ID: <4586697E.6040408@ziobudda.net> Ciao all. Per un progetto che sto realizzando devo calcolare un certo valore e questo calcolo si basa su dei valori numerici ritornati da una serie di query, che a loro volta richiamano la funzione che ha appena eseguita la query. Per spiegarmi. Prendete un albero, ad ogni foglia associate un valore numerico, e pensate al calcolo della somma di tutti i valori di tutte le foglie. In PHP è una banale ricorsione. Mi chiedevo pero': visto che in MySQL 5 hanno creato le store procedure questo tipo di calcoli non sarebbe meglio farli fare a mysql ? Ho cercato in giro, ma non sono riuscito a trovare dove/come creare delle store procedure ricorsive. Qualcuno di voi ha mai utilizzato le store procedure di mysql5 ? Funzionano o sono come le viste (vedi email precedente) ? M. -- Michel 'ZioBudda' Morelli michel@ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-0240706096 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it From mailinglist a francescoreitano.it Mon Dec 18 11:17:34 2006 From: mailinglist a francescoreitano.it (Mailinglist - Francesco Reitano) Date: Mon Dec 18 11:29:21 2006 Subject: [Db] Meglio una tabella o una vista ? In-Reply-To: <4586641B.2060709@vezz.it> References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> Message-ID: <45866ABE.4080501@francescoreitano.it> A mio parere la vista dovrebbe allegerire il carico, dipende però di quanti dati si parla. Se non ricordo male mysql anche sul 1.000.000 di record non aveva problemi di prestazioni. Su cifre + basse non lo noti neanche. E bisogna vedere anche quante operazioni devi fare, mettiamo conto che devi fare un update su una singola categoria e nessun'altra operazione, la creazione di una vista e poi l'update potrebbe essere meno performante che un update diretto. Se invece devi fare 20 operazioni diverse potrebbe essere giusto una vista. Ti conviene usare dei tool di benchmark, inserisci un tot di record a caso e poi testi. ciauz Francesco From matteo.giacomazzi a gmail.com Mon Dec 18 11:18:25 2006 From: matteo.giacomazzi a gmail.com (Matteo Giacomazzi) Date: Mon Dec 18 11:30:22 2006 Subject: [Db] Store procedure mysql5 ricorsive In-Reply-To: <4586697E.6040408@ziobudda.net> References: <4586697E.6040408@ziobudda.net> Message-ID: 2006/12/18, Davide Michel 'ZioBudda' Morelli : > Ho cercato in giro, ma > non sono riuscito a trovare dove/come creare delle store procedure > ricorsive. Qualcuno di voi ha mai utilizzato le store procedure di > mysql5 ? Funzionano o sono come le viste (vedi email precedente) ? http://dev.mysql.com/doc/refman/5.1/en/routine-restrictions.html Dicono che le stored procedure non possono essere ricorsive. -- Matteo From michel a ziobudda.net Mon Dec 18 11:25:59 2006 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Mon Dec 18 11:37:49 2006 Subject: [Db] Store procedure mysql5 ricorsive In-Reply-To: References: <4586697E.6040408@ziobudda.net> Message-ID: <45866CB7.3080504@ziobudda.net> Matteo Giacomazzi ha scritto: > http://dev.mysql.com/doc/refman/5.1/en/routine-restrictions.html > > Dicono che le stored procedure non possono essere ricorsive. > In MySQL 5, at the moment you can't write a recursive stored functions. It is forbidden. Instead you can write a recursive stored procedure. That is not permitted by default but modifying a variable you can achieve such a recursion. The variable is |max_sp_recursion_depth|. http://www.planetmysql.org/entries/4244 -- Michel 'ZioBudda' Morelli michel@ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-0240706096 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20061218/94e35390/attachment.htm From michel a ziobudda.net Mon Dec 18 11:28:06 2006 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Mon Dec 18 11:39:54 2006 Subject: [Db] Meglio una tabella o una vista ? In-Reply-To: <45866ABE.4080501@francescoreitano.it> References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> <45866ABE.4080501@francescoreitano.it> Message-ID: <45866D36.9080806@ziobudda.net> Mailinglist - Francesco Reitano ha scritto: > A mio parere la vista dovrebbe allegerire il carico, dipende però di > quanti dati si parla. > Se non ricordo male mysql anche sul 1.000.000 di record non aveva > problemi di > prestazioni. > Su cifre + basse non lo noti neanche. hmmm... > > E bisogna vedere anche quante operazioni devi fare, mettiamo conto che > devi fare un update > su una singola categoria e nessun'altra operazione, la creazione di > una vista e poi l'update > potrebbe essere meno performante che un update diretto. La vista la crei una sola volta (magari al momento di creare la struttura del DB), non la crei per ogni operazione (o sbaglio ?). > Se invece devi fare 20 operazioni diverse potrebbe essere giusto una > vista. > > Ti conviene usare dei tool di benchmark, inserisci un tot di record a > caso e poi testi. Che tool ??? M. -- Michel 'ZioBudda' Morelli michel@ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-0240706096 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it From domenico.lorusso a pleiade.it Mon Dec 18 11:32:39 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 11:42:03 2006 Subject: [Db] Meglio una tabella o una vista ? In-Reply-To: <45866ABE.4080501@francescoreitano.it> References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> <45866ABE.4080501@francescoreitano.it> Message-ID: <45866E47.7020506@pleiade.it> Mailinglist - Francesco Reitano ha scritto: > A mio parere la vista dovrebbe allegerire il carico, dipende però di > quanti dati si parla. > Se non ricordo male mysql anche sul 1.000.000 di record non aveva > problemi di > prestazioni. Puoi spiegare perché questa affermazione? Ho dato una scorsa veloce e mysql non supporta snapshot né materialized view. Quindi le view mi sembrano quelle definite nello standard sql2/3, cioè delle query salvate... (con qualche vantaggio in più d'accordo) 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 cristiano a verondini.it Mon Dec 18 11:36:51 2006 From: cristiano a verondini.it (Cristiano Verondini) Date: Mon Dec 18 11:48:47 2006 Subject: [Db] Meglio una tabella o una vista ? References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> <45866ABE.4080501@francescoreitano.it> Message-ID: <006301c72290$71ae93d0$6301a8c0@IdeaFutura.local> >> A mio parere la vista dovrebbe allegerire il carico, dipende però di >> quanti dati si parla. Ho qualche dubbio su questa affermazione, soprattutto perché MySQL non utilizza tecniche avanzate per la gestione delle view. Forse un minimo di miglioramento puoi averlo sulle select, ma dubito molto di più. Ci vorrebbe comunque qualche test ... Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Mon Dec 18 12:50:49 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 13:02:41 2006 Subject: [Db] incartato col count Message-ID: <45868099.5080008@vezz.it> Ciao a tutti, problema semplice ma mi sto incartando... ho una tabella così: pere pere banane pere pesche banane lamponi pere vorrei una tabella così: 4,pere 2,banane 1,lamponi 1,pesche Ovvero che mi dice l'occorrenza dei record diversi ordinati in ordine decrescente. Suggerimenti? Grazie Ciao Marcello From lfalvo a logos.net Mon Dec 18 12:56:21 2006 From: lfalvo a logos.net (Luca Falvo) Date: Mon Dec 18 13:08:36 2006 Subject: [Db] incartato col count In-Reply-To: <45868099.5080008@vezz.it> References: <45868099.5080008@vezz.it> Message-ID: <6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> At 12.50 18/12/2006, you wrote: >Suggerimenti? SELECT count(nome_campo) as occorrenze, nome_campo FROM `test` group by nome_campo order by occorrenze desc ciao. From marcello a vezz.it Mon Dec 18 13:04:24 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 13:16:15 2006 Subject: [Db] incartato col count In-Reply-To: <6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> References: <45868099.5080008@vezz.it> <6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> Message-ID: <458683C8.1030600@vezz.it> Luca Falvo ha scritto: > At 12.50 18/12/2006, you wrote: >> Suggerimenti? > > SELECT count(nome_campo) as occorrenze, nome_campo > FROM `test` group by nome_campo order by occorrenze desc perfetto! Grazie. Ora esageriamo... supponiamo ci sia anche una data... tabella frutta: pere,2006-01-01 pere,2006-01-22 banane,2006-01-01 pere,2006-03-01 pesche,2006-01-01 banane,2006-04-01 lamponi,2006-05-01 pere,2006-03-01 E' possibile sapere quante pere ho raccolto diviso per mese? Magari passando per una tabella temporanea che esplode la data in mese e anno? Saluti Marcello From cristiano a verondini.it Mon Dec 18 13:32:43 2006 From: cristiano a verondini.it (Cristiano Verondini) Date: Mon Dec 18 13:44:38 2006 Subject: [Db] incartato col count References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> Message-ID: <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> > Ora esageriamo... > supponiamo ci sia anche una data... > > tabella frutta: > > pere,2006-01-01 > pere,2006-01-22 > banane,2006-01-01 > pere,2006-03-01 > pesche,2006-01-01 > banane,2006-04-01 > lamponi,2006-05-01 > pere,2006-03-01 > > E' possibile sapere quante pere ho raccolto diviso per mese? SELECT COUNT(frutto) AS C, CONCAT(YEAR(data), MONTH(data)) AS DT, frutto, FROM Tabella GROUP BY DT, frutto ORDER BY DT, C DESC Ovviamente puoi usare una qualsiasi funzione di formattazione della data. -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Mon Dec 18 13:40:57 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 13:52:53 2006 Subject: [Db] incartato col count In-Reply-To: <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> Message-ID: <45868C59.9070803@vezz.it> Cristiano Verondini ha scritto: >> >> E' possibile sapere quante pere ho raccolto diviso per mese? > > SELECT > COUNT(frutto) AS C, > CONCAT(YEAR(data), MONTH(data)) AS DT, > frutto, > > FROM Tabella > > GROUP BY DT, frutto > ORDER BY DT, C DESC > > Ovviamente puoi usare una qualsiasi funzione di formattazione della > data. Grazie 1000! Perfetto, c'è solo una ',' in più dopo frutto ma è il classico syntax error. Perché sia perfetta ci vorrebbe lo '0' davanti al mese di una cifra... sono totalmente a digiuno sulla manipolazione stringhe in sql. Penso che sia una buona FAQ... tocca diversi argomenti interessanti :) Ciao Marcello From domenico.lorusso a pleiade.it Mon Dec 18 13:52:17 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 14:01:43 2006 Subject: [Db] incartato col count In-Reply-To: <45868C59.9070803@vezz.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45868C59.9070803@vezz.it> Message-ID: <45868F01.8090706@pleiade.it> Marcello Vezzelli ha scritto: > Perché sia perfetta ci vorrebbe lo '0' davanti al mese di una cifra... > sono totalmente a digiuno sulla manipolazione stringhe in sql. > > http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html guarda date_format ciaps :-) -- 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 Mon Dec 18 13:50:36 2006 From: cristiano a verondini.it (Cristiano Verondini) Date: Mon Dec 18 14:02:31 2006 Subject: [Db] incartato col count References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it><009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45868C59.9070803@vezz.it> Message-ID: <00a501c722a3$2099c330$6301a8c0@IdeaFutura.local> > Perfetto, c'è solo una ',' in più dopo frutto ma è il classico syntax > error. Copia/incolla maledetto! :) > Perché sia perfetta ci vorrebbe lo '0' davanti al mese di una cifra... > sono totalmente a digiuno sulla manipolazione stringhe in sql. Una buona lettura del manuale di mysql, soprattutto dalle parti della funzione DATE_FORMAT() porterà sicuramente ottimo consiglio. Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Mon Dec 18 13:54:40 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 14:06:33 2006 Subject: [Db] incartato col count In-Reply-To: <45868F01.8090706@pleiade.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45868C59.9070803@vezz.it> <45868F01.8090706@pleiade.it> Message-ID: <45868F90.2030100@vezz.it> Domenico L. ha scritto: > Marcello Vezzelli ha scritto: >> Perché sia perfetta ci vorrebbe lo '0' davanti al mese di una cifra... >> sono totalmente a digiuno sulla manipolazione stringhe in sql. >> >> > http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html > guarda date_format Grazie (anche a Cristiano), esattamente quel che serviva! Saluti Marcello From marcello a vezz.it Mon Dec 18 14:15:51 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 14:27:51 2006 Subject: [Db] incartato col count In-Reply-To: <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> Message-ID: <45869487.2060204@vezz.it> Cristiano Verondini ha scritto: > >> E' possibile sapere quante pere ho raccolto diviso per mese? > > SELECT > COUNT(frutto) AS C, > DATE_FORMAT(data,'%Y %m') AS DT, > frutto > > FROM Tabella > > GROUP BY DT, frutto > ORDER BY DT, C DESC > Questa è al momento lo stato dell'arte della query del raccoglitore di frutta. Ora... altra complicazione... Il totale dei frutti raccolti ogni mese. SELECT DATE_FORMAT( data, '%Y %m' ) AS DT, COUNT( * ) AS TOT FROM frutta GROUP BY DT ORDER BY DT Volendo unirle... SELECT * FROM ( SELECT COUNT( frutto) AS C, DATE_FORMAT(data,'%Y %m') AS DT, frutto FROM frutta GROUP BY DT, frutto ORDER BY DT, C DESC ) AS T1 JOIN ( SELECT DATE_FORMAT( data, '%Y %m' ) AS DT, COUNT( * ) AS TOT FROM frutta GROUP BY DT ORDER BY DT ) AS T2 ON T1.DT=T2.DT ORDER BY T1.DT,T1.C E' sensato? C'è modo di far meglio senza la JOIN ? Ciao Marcello From domenico.lorusso a pleiade.it Mon Dec 18 14:26:40 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 14:36:10 2006 Subject: [Db] incartato col count In-Reply-To: <45869487.2060204@vezz.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> Message-ID: <45869710.6010308@pleiade.it> Marcello Vezzelli ha scritto: > Cristiano Verondini ha scritto: > >>> E' possibile sapere quante pere ho raccolto diviso per mese? >>> >> SELECT >> COUNT(frutto) AS C, >> DATE_FORMAT(data,'%Y %m') AS DT, >> frutto >> >> FROM Tabella >> >> GROUP BY DT, frutto >> ORDER BY DT, C DESC >> >> > > Questa è al momento lo stato dell'arte della query del raccoglitore di > frutta. > > Ora... altra complicazione... > Il totale dei frutti raccolti ogni mese. > > SELECT DATE_FORMAT( data, '%Y %m' ) AS DT, COUNT( * ) AS TOT > FROM frutta > GROUP BY DT > ORDER BY DT > > Volendo unirle... > > SELECT * FROM > ( > SELECT COUNT( frutto) AS C, > DATE_FORMAT(data,'%Y %m') AS DT, > frutto > FROM frutta > GROUP BY DT, frutto > ORDER BY DT, C DESC > ) AS T1 > JOIN > ( > SELECT DATE_FORMAT( data, '%Y %m' ) AS DT, > COUNT( * ) AS TOT > FROM frutta > GROUP BY DT > ORDER BY DT > ) AS T2 > ON T1.DT=T2.DT > ORDER BY T1.DT,T1.C > > A parte che non so se sia possibile usare DT come elemento del group by dipende dai dbms cmq la seconda ottiene le occorrenze raggruppate per mese la prima le occorrenze distinte raggruppate per mese e per frutto mettendole insieme ottieni una ripetizione... Credo tu voglia usare una funzione come la rollup e visto che usi mysql (che versione?) cmq http://dev.mysql.com/doc/refman/5.0/en/group-by-modifiers.html SELECT COUNT( frutto) AS C, # o COUNT( *) non è la stessa cosa! DATE_FORMAT(data,'%Y %m') AS DT, frutto FROM frutta GROUP BY DT, frutto with rollup Credo perché non ho mai usato mysql su queste cose ma dovrebbe funzionare, controlla da che versione esiste -- 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 Mon Dec 18 14:27:14 2006 From: cristiano a verondini.it (Cristiano Verondini) Date: Mon Dec 18 14:39:10 2006 Subject: [Db] incartato col count References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it><009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> Message-ID: <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> > Volendo unirle... > > SELECT * FROM > ( > SELECT COUNT( frutto) AS C, > DATE_FORMAT(data,'%Y %m') AS DT, > frutto > FROM frutta > GROUP BY DT, frutto > ORDER BY DT, C DESC > ) AS T1 > JOIN > ( > SELECT DATE_FORMAT( data, '%Y %m' ) AS DT, > COUNT( * ) AS TOT > FROM frutta > GROUP BY DT > ORDER BY DT > ) AS T2 > ON T1.DT=T2.DT > ORDER BY T1.DT,T1.C > > E' sensato? C'è modo di far meglio senza la JOIN ? Stai parlando di una UNION e ti è venuto scritto JOIN, vero? :) Cris -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From marcello a vezz.it Mon Dec 18 14:36:53 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 14:48:45 2006 Subject: [Db] incartato col count In-Reply-To: <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it><009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> Message-ID: <45869975.6040500@vezz.it> Cristiano Verondini ha scritto: >> >> E' sensato? C'è modo di far meglio senza la JOIN ? > > Stai parlando di una UNION e ti è venuto scritto JOIN, vero? :) Ho scritto JOIN e volevo dire JOIN... però è sbagliato e ci va UNION. :) Ciao Marcello From marcello a vezz.it Mon Dec 18 14:38:11 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 14:50:06 2006 Subject: [Db] incartato col count In-Reply-To: <45869710.6010308@pleiade.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <45869710.6010308@pleiade.it> Message-ID: <458699C3.9050804@vezz.it> Domenico L. ha scritto: > >> > A parte che non so se sia possibile usare DT come elemento del group > by dipende dai dbms Questa su MySQL 5 funziona e fa quel che volevo. > SELECT COUNT( frutto) AS C, # o COUNT( *) non è la stessa cosa! > DATE_FORMAT(data,'%Y %m') AS DT, > frutto > FROM frutta > GROUP BY DT, frutto > with rollup Cosa fa rollup in questo caso? Ciao Marcello From domenico.lorusso a pleiade.it Mon Dec 18 14:48:54 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 14:58:20 2006 Subject: [Db] incartato col count In-Reply-To: <458699C3.9050804@vezz.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <45869710.6010308@pleiade.it> <458699C3.9050804@vezz.it> Message-ID: <45869C46.500@pleiade.it> Marcello Vezzelli ha scritto: > Domenico L. ha scritto: > >>> >>> >> A parte che non so se sia possibile usare DT come elemento del group >> by dipende dai dbms >> > > Questa su MySQL 5 funziona e fa quel che volevo. > > >> SELECT COUNT( frutto) AS C, # o COUNT( *) non è la stessa cosa! >> DATE_FORMAT(data,'%Y %m') AS DT, >> frutto >> FROM frutta >> GROUP BY DT, frutto >> with rollup >> > > Cosa fa rollup in questo caso? > > > > credo quello che tu voglia :-) (ma l'esempio l'hai visto?) ti aggiunge una riga per ogni mese: 200612, null, somma dei frutti nel mese e una in fondo: null, null, somma di tutto se ben ricordo con le having al posto giusto (having td is not null) puoi evitarti questa ultima riga Purtroppo non ho un mysql 5 per provarla, se tu hai un phpmyadmin su una macchina su internet posso fare un paio di prove Ciao N.B. la rollup è molto più veloce di una union o di una join! (e cmq in questo caso credo sarebbe meglio usare la union all, se esiste in mysql) -- 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 Mon Dec 18 14:53:00 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 15:04:52 2006 Subject: [Db] incartato col count In-Reply-To: <45869C46.500@pleiade.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <45869710.6010308@pleiade.it> <458699C3.9050804@vezz.it> <45869C46.500@pleiade.it> Message-ID: <45869D3C.4010005@vezz.it> Domenico L. ha scritto: > Cosa fa rollup in questo caso? >> >> >> >> > credo quello che tu voglia :-) (ma l'esempio l'hai visto?) Eh, te l'ho chiesto perché con o senza non cambia nulla... > > Purtroppo non ho un mysql 5 per provarla, se tu hai un phpmyadmin su > una macchina su internet posso fare un paio di prove Mysql5 si, phpmyadmin su internet no. Sorry. Ciao Marcello From mailinglist a francescoreitano.it Mon Dec 18 15:08:39 2006 From: mailinglist a francescoreitano.it (Mailinglist - Francesco Reitano) Date: Mon Dec 18 15:20:29 2006 Subject: [Db] Meglio una tabella o una vista ? In-Reply-To: <45866E47.7020506@pleiade.it> References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> <45866ABE.4080501@francescoreitano.it> <45866E47.7020506@pleiade.it> Message-ID: <4586A0E7.1010807@francescoreitano.it> Domenico L. ha scritto: > Ho dato una scorsa veloce e mysql non supporta snapshot né > materialized view. > Quindi le view mi sembrano quelle definite nello standard sql2/3, cioè > delle query salvate... (con qualche vantaggio in più d'accordo) Ma dalla 5 non erano previste? allora ho cannato. Eppure da qualche parte mi pareva di averlo letto. Ricerchina su google e si risolve tutto! From domenico.lorusso a pleiade.it Mon Dec 18 15:20:27 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 15:29:53 2006 Subject: [Db] incartato col count In-Reply-To: <45869D3C.4010005@vezz.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <45869710.6010308@pleiade.it> <458699C3.9050804@vezz.it> <45869C46.500@pleiade.it> <45869D3C.4010005@vezz.it> Message-ID: <4586A3AB.2020607@pleiade.it> Marcello Vezzelli ha scritto: > Domenico L. ha scritto: > >> Cosa fa rollup in questo caso? >> >>> >>> >>> >> credo quello che tu voglia :-) (ma l'esempio l'hai visto?) >> > > Eh, te l'ho chiesto perché con o senza non cambia nulla... > uhm l'esempio sulla documentazione è chiaro e (al di là della sintassi) fa quello che mi aspetto... di più non riesco a vedere Se qualcuno che abbia una mysql 4.1.1 o superiore e voglia provare: CREATE TABLE `_frutta` ( `id` smallint(3) unsigned NOT NULL auto_increment, `data` date default NULL, `frutto` varchar(10) default NULL, PRIMARY KEY (`id`) ) TYPE=InnoDB COMMENT='di prova'; INSERT INTO `_frutta` (`id`, `data`, `frutto`) VALUES (1,'2006-12-18','banana'), (2,'2006-12-18','banana'), (3,'2006-12-18','banana'), (4,'2006-11-18','arancia'), (5,'2006-11-18','arancia'), (6,'2006-12-18','arancia'); select date_format(data,'%Y %m') as dt, frutto, count( *) as c from _frutta group by dt, frutto with rollup Questo è l'output che mi aspetto: dt frutto c 2006 11 arancia 2 2006 11 2 2006 12 arancia 1 2006 12 banana 3 2006 12 4 6 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 Mon Dec 18 15:24:17 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 15:36:26 2006 Subject: [Db] incartato col count In-Reply-To: <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it><009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> Message-ID: <4586A491.7050705@vezz.it> Cristiano Verondini ha scritto: >> >> E' sensato? C'è modo di far meglio senza la JOIN ? > > Stai parlando di una UNION e ti è venuto scritto JOIN, vero? :) Ammetto che sono imbambito, ma non riesco a farla funzionare con la UNION mentre con la JOIN si. Nella realtà dei fatti a me interessano sostanzialmente solo le pere (e i doppi sensi si sprecano :D). Quindi metto un where frutto='pera' dove vado a contare le pere, ma continuo a contare tutti i frutti nella seconda parte della query. (no, 'pera' non è un campo indicizzato, nel senso che potrebbe essere qualsiasi parola... è un campo aperto inserito dall'utente). Ho tolto gli ORDER BY delle SELECT e ne ho messo uno nella JOIN. Ho aggiunto anche la percentuale di pere rispetto al totale. Faccio un riepiloghino... ho una tabella così composta: CREATE TABLE `frutta` ( `id` INT NOT NULL AUTO_INCREMENT , `frutto` VARCHAR( 100 ) NOT NULL , `data` DATE NOT NULL , PRIMARY KEY ( `id` ) ) TYPE = innodb; dentro ho nomi di frutti e date di raccolta. Voglio una tabella che mi riporti relativamente alle "pere", un record per ogni mese: - mese di raccolta - totale frutti raccolti in quel mese - totale pere raccolte in quel mese - percentuale delle "pere" rispetto al totale Questa è la query costruita con pesante contributo della ml :D SELECT T1.DT2, T2.TOT, T1.C, T1.C/T2.TOT*100 AS PERC FROM ( SELECT COUNT( frutto) AS C, DATE_FORMAT(data,'%Y %m') AS DT, DATE_FORMAT(data, '%m-%Y') AS DT2, frutto FROM frutta WHERE frutto='pera' GROUP BY DT, pera ) AS T1 JOIN ( SELECT DATE_FORMAT( data, '%Y %m' ) AS DT, COUNT( * ) AS TOT FROM frutta GROUP BY DT ) AS T2 ON T1.DT=T2.DT ORDER BY T1.DT,T1.C DESC Adesso vorrei capire però il modo MIGLIORE per farlo :) Qualche dritta? Ciao Marcello From marcello a vezz.it Mon Dec 18 15:26:55 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 15:38:48 2006 Subject: [Db] incartato col count In-Reply-To: <4586A3AB.2020607@pleiade.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <45869710.6010308@pleiade.it> <458699C3.9050804@vezz.it> <45869C46.500@pleiade.it> <45869D3C.4010005@vezz.it> <4586A3AB.2020607@pleiade.it> Message-ID: <4586A52F.60900@vezz.it> Domenico L. ha scritto: > Questo è l'output che mi aspetto: > dt frutto c > 2006 11 arancia 2 > 2006 11 > 2 > 2006 12 arancia 1 > 2006 12 banana 3 > 2006 12 > 4 > > > 6 Ecco cosa ottengo (mando in html che tiene la tabella) 2006 11 arancia 2 2006 11 /NULL/ 2 2006 12 arancia 1 2006 12 banana 3 2006 12 /NULL/ 4 /NULL/ /NULL/ 6 Mi sembra che ci siamo. Si vede che ho cannato qualcosa prima. Ciao Marcello -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20061218/d18f5156/attachment.html From mailinglist a francescoreitano.it Mon Dec 18 15:40:11 2006 From: mailinglist a francescoreitano.it (Mailinglist - Francesco Reitano) Date: Mon Dec 18 15:52:20 2006 Subject: [Db] Meglio una tabella o una vista ? In-Reply-To: <4586A0E7.1010807@francescoreitano.it> References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> <45866ABE.4080501@francescoreitano.it> <45866E47.7020506@pleiade.it> <4586A0E7.1010807@francescoreitano.it> Message-ID: <4586A84B.8090809@francescoreitano.it> Le Materialized Views possono essere "emulate", usando una semplice procedura con trigger, come si vede da qui: http://pure.rednoize.com/2005/10/26/materialized-views-in-mysql/ | per creare una tabella da un'altra con una select: CREATE TABLE new_tbl SELECT * FROM orig_tbl;| | si schiaffa il tutto dentro una procedure: ||DELIMITER // CREATE PROCEDURE updateDemoView () BEGIN DROP TABLE IF EXISTS view_m_demo; CREATE TABLE view_m_demo SELECT * FROM view_demo; END; // DELIMITER ; ||con una trigger: delimiter // CREATE TRIGGER T_updateDemoView AFTER INSERT ON some_involved_table FOR EACH ROW BEGIN /* calls the procedure to update out materialized view on each insert */ CALL updateDemoView (); END // delimiter ;| Questa soluzione però non so se possa essere ottimale a livello di prestazioni, devo creare una tabella e popolarla di dati. Ciauz Francesco -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20061218/27b04f72/attachment-0001.html From cristiano a verondini.it Mon Dec 18 15:43:00 2006 From: cristiano a verondini.it (Cristiano Verondini) Date: Mon Dec 18 15:54:56 2006 Subject: [Db] Meglio una tabella o una vista ? References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> <45866ABE.4080501@francescoreitano.it> <45866E47.7020506@pleiade.it><4586A0E7.1010807@francescoreitano.it> <4586A84B.8090809@francescoreitano.it> Message-ID: <00eb01c722b2$d464d710$6301a8c0@IdeaFutura.local> Questa soluzione però non so se possa essere ottimale a livello di prestazioni, devo creare una tabella e popolarla di dati. Devi sempre tenere presente che tipo di operazioni andrai a fare sulle tue tabelle. Una materialized view, a parte gli ovvi problemi di dimensioni e backup, diventa molto efficiente se hai pochi inserimenti/modifiche e molti accessi in consultazione. 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/20061218/549fbb9b/attachment.htm From cristiano a verondini.it Mon Dec 18 15:44:29 2006 From: cristiano a verondini.it (Cristiano Verondini) Date: Mon Dec 18 15:56:25 2006 Subject: [Db] incartato col count References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it> <009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local><45869487.2060204@vezz.it> <45869710.6010308@pleiade.it> Message-ID: <00f301c722b3$095934c0$6301a8c0@IdeaFutura.local> > A parte che non so se sia possibile usare DT come elemento del group > by dipende dai dbms Stiamo parlando di MySQL, DT è una stringa, tutto funziona. -- Cristiano Verondini http://www.verondini.it --- [ICQ: 114 190] From michel a ziobudda.net Mon Dec 18 15:45:50 2006 From: michel a ziobudda.net (Davide Michel 'ZioBudda' Morelli) Date: Mon Dec 18 15:57:40 2006 Subject: [Db] Meglio una tabella o una vista ? In-Reply-To: <00eb01c722b2$d464d710$6301a8c0@IdeaFutura.local> References: <458662D3.2050401@ziobudda.net> <4586641B.2060709@vezz.it> <45866ABE.4080501@francescoreitano.it> <45866E47.7020506@pleiade.it><4586A0E7.1010807@francescoreitano.it> <4586A84B.8090809@francescoreitano.it> <00eb01c722b2$d464d710$6301a8c0@IdeaFutura.local> Message-ID: <4586A99E.5070508@ziobudda.net> Cristiano Verondini ha scritto > Devi sempre tenere presente che tipo di operazioni andrai a fare > sulle tue tabelle. Una materialized view, a parte gli ovvi problemi di > dimensioni e backup, diventa molto efficiente se hai pochi > inserimenti/modifiche e molti accessi in consultazione. > Il rapporto dovrebbe essere 10 (letture) a 1 (scritture) M. -- Michel 'ZioBudda' Morelli michel@ziobudda.net Consulenza sistemistica in ambito OpenSource. Sviluppo applicazioni web dinamiche (LAMP+Ajax) Telefono: +39-0240706096 -- Fax: +39-0291390660 http://www.ziobudda.net ICQ: 58351764 http://www.ziobuddalabs.it Skype: zio_budda http://www.ajaxblog.it -------------- parte successiva -------------- Un allegato HTML è stato rimosso... URL: http://lists.ziobudda.net/pipermail/db/attachments/20061218/23ff56fc/attachment.html From domenico.lorusso a pleiade.it Mon Dec 18 15:53:27 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 16:02:54 2006 Subject: [Db] incartato col count In-Reply-To: <4586A491.7050705@vezz.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it><009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> <4586A491.7050705@vezz.it> Message-ID: <4586AB67.2010701@pleiade.it> Marcello Vezzelli ha scritto: > Faccio un riepiloghino... > ho una tabella così composta: > > CREATE TABLE `frutta` ( > `id` INT NOT NULL AUTO_INCREMENT , > `frutto` VARCHAR( 100 ) NOT NULL , > `data` DATE NOT NULL , > PRIMARY KEY ( `id` ) > ) TYPE = innodb; > > dentro ho nomi di frutti e date di raccolta. > Voglio una tabella che mi riporti relativamente alle "pere", un record > per ogni mese: > - mese di raccolta > - totale frutti raccolti in quel mese > - totale pere raccolte in quel mese > - percentuale delle "pere" rispetto al totale > ti odio! spiegarti prima? :-P select date_format( data, '%Y %m') as dt, 'arancia' as frutto, sum( case when frutto = :variabileUtente then 1 else 0 end) as contoFruttoScelto, count(*) as totale, sum( case when frutto = :variabileUtente then 1 else 0 end) / count(*) * 100 as percentuale # contoFruttoScelto/totale*100 as percentuale #->Non funziona purtropo from frutta group by dt > > riscrivere sum( ..) e count con gli stessi identici caratteri e spazi evita che il motore calcoli 2 volte la stessa cosa :-) 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 Mon Dec 18 16:07:33 2006 From: marcello a vezz.it (Marcello Vezzelli) Date: Mon Dec 18 16:19:34 2006 Subject: [Db] incartato col count In-Reply-To: <4586AB67.2010701@pleiade.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it><009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> <4586A491.7050705@vezz.it> <4586AB67.2010701@pleiade.it> Message-ID: <4586AEB5.5090602@vezz.it> Domenico L. ha scritto: > ti odio! spiegarti prima? :-P eh, se spiegassero a me tutto insieme :D Sono stato spiegato a rate eheh :) > > select date_format( data, '%Y %m') as dt, > 'arancia' as frutto, > sum( case when frutto = :variabileUtente then 1 else 0 end) as > contoFruttoScelto, > count(*) as totale, > sum( case when frutto = :variabileUtente then 1 else 0 end) / > count(*) * 100 as percentuale > # contoFruttoScelto/totale*100 as percentuale #->Non funziona purtropo > from frutta > group by dt bellissima. Grazie 1000... approccio diverso, molto educativo! Ciao Marcello From domenico.lorusso a pleiade.it Mon Dec 18 16:23:30 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Mon Dec 18 16:32:58 2006 Subject: [Db] incartato col count In-Reply-To: <4586AEB5.5090602@vezz.it> References: <45868099.5080008@vezz.it><6.2.1.2.2.20061218125547.0336a9a0@mail.logos.net> <458683C8.1030600@vezz.it><009901c722a0$a0f0b5f0$6301a8c0@IdeaFutura.local> <45869487.2060204@vezz.it> <00b201c722a8$3eb13740$6301a8c0@IdeaFutura.local> <4586A491.7050705@vezz.it> <4586AB67.2010701@pleiade.it> <4586AEB5.5090602@vezz.it> Message-ID: <4586B272.8050904@pleiade.it> Marcello Vezzelli ha scritto: > bellissima. > > Grazie 1000... approccio diverso, molto educativo! > > de nada! 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 gabriele a neobeta.com Mon Dec 18 19:24:16 2006 From: gabriele a neobeta.com (Gabriele) Date: Mon Dec 18 19:36:15 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <458667E8.2060302@pleiade.it> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> <4590EA3D.50609@neobeta.com> <45865F37.5040300@vezz.it> <4590ED72.5020506@neobeta.com> <458667E8.2060302@pleiade.it> Message-ID: <4586DCD0.8020800@neobeta.com> Domenico L. wrote: > io continuo a non capire cosa vuoi ottenere, cmq la distinct ti > permette di estrarre record distinti, sarebbe in teoria possibile > lavorare sui singoli attributi la non so se mysql lo supporta e > soprattuto non credo ti serva. > > La group by ti permette di raggruppare su un certo numero di attributi > (e questi attributi saranno quindi distinti) e di aggreare in qualche > modo gli altri, tipico il conteggio piuttosto che la somma. > > > In fondo a qualsiasi query è poi possibile specificare una clausola di > ordinamento > > Altro non si può fare... > > Non penso sia difficile... voglio ottenere un record distinto per un campo (valore1) e ordinato rispetto ad un altro campo (valore3), portandomi dietro tutti gli altri campi che ho. Con Distinct ottengo un record distinto, ma rispetto a tutto l'insieme di valori che voglio estrarre (e quindi mantengo i duplicati, ma salvo l'ordinamento); con GROUP BY ottengo un record con il valore distinto rispetto al valore1, ma non ordinato rispetto al valore3. Vorrei poter distinguere rispetto ad un campo e ordinare rispetto ad un altro: valore1 valore2 valore3 89 2 34.67 23 4 67.89 21 3 34.89 90 4 35.67 23 4 56.89 21 9 56.78 Riprendendo l'esempio.... devo raggruppare il valore1 e ordinarlo rispetto al valore3, ottenendo quindi un univoco valore1 e il massimo del valore3 (quindi tra tutti quelli che hanno lo stesso valore1) Impossibile? Gabriele From cesare a ngi.it Mon Dec 18 20:50:51 2006 From: cesare a ngi.it (Cesare D'Amico) Date: Mon Dec 18 21:02:22 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4586DCD0.8020800@neobeta.com> References: <45904DB6.8070707@neobeta.com> <458667E8.2060302@pleiade.it> <4586DCD0.8020800@neobeta.com> Message-ID: <200612182050.51750.cesare@ngi.it> Alle 19:24, lunedì 18 dicembre 2006, Gabriele ha scritto: > Vorrei poter distinguere rispetto ad un campo e ordinare rispetto ad > un altro: Usa la clausola HAVING, che seleziona all'interno del recordset raggruppato dalla GROUP BY: SELECT ... GROUP BY valore1 HAVING valore3 = MAX(valore3) Non mi ricordo se puoi mettere MAX(valore3) nella clausola HAVING, al limite metti un alias nella SELECT: SELECT ... , MAX(valore3) AS max_valore3 GROUP BY valore1 HAVING valore3 = max_valore3 Provala, in questo momento non sono sicuro che sia giusta :-P Ciaps ce From gabriele a neobeta.com Mon Dec 18 21:39:02 2006 From: gabriele a neobeta.com (Gabriele) Date: Mon Dec 18 21:51:03 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <200612182050.51750.cesare@ngi.it> References: <45904DB6.8070707@neobeta.com> <458667E8.2060302@pleiade.it> <4586DCD0.8020800@neobeta.com> <200612182050.51750.cesare@ngi.it> Message-ID: <4586FC66.9060809@neobeta.com> Cesare D'Amico wrote: > Alle 19:24, lunedì 18 dicembre 2006, Gabriele ha scritto: > >> Vorrei poter distinguere rispetto ad un campo e ordinare rispetto ad >> un altro: >> > > Usa la clausola HAVING, che seleziona all'interno del recordset > raggruppato dalla GROUP BY: > > SELECT ... > GROUP BY valore1 > HAVING valore3 = MAX(valore3) > > Non mi ricordo se puoi mettere MAX(valore3) nella clausola HAVING, al > limite metti un alias nella SELECT: > > SELECT ... , MAX(valore3) AS max_valore3 > GROUP BY valore1 > HAVING valore3 = max_valore3 > > Provala, in questo momento non sono sicuro che sia giusta :-P > > > No, in questo modo ottengo tutt'altro, poichè se il record raggruppato con il valore1 non ottiene il massimo valore della tabella non viene proprio visualizzato. Non penso che la funzione Max mi possa servire, poichè la sua funzione è riferita sempre a tutti i valori della tabella, mentre a me servirebbe qualcosa del tipo: "ho bisogno del massimo valore tra tutti quelli che presentano un medesimo valore in un altro campo" Gabriele From leodav a tiscali.it Mon Dec 18 22:50:07 2006 From: leodav a tiscali.it (Leonardo) Date: Mon Dec 18 23:00:06 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4586FC66.9060809@neobeta.com> References: <45904DB6.8070707@neobeta.com> <200612182050.51750.cesare@ngi.it> <4586FC66.9060809@neobeta.com> Message-ID: <200612182250.08219.leodav@tiscali.it> Alle 21:39, lunedì 18 dicembre 2006, Gabriele ha scritto: > a me servirebbe qualcosa del tipo: "ho bisogno del massimo valore > tra tutti quelli che presentano un medesimo valore in un altro campo" questo si dovrebbe tradurre cosi: SELECT valore1,MAX(valore2), valore3 FROM tabella GROUP BY valore1 Ciao Leonardo From cesare a ngi.it Mon Dec 18 22:59:10 2006 From: cesare a ngi.it (Cesare D'Amico) Date: Mon Dec 18 23:10:42 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4586FC66.9060809@neobeta.com> References: <45904DB6.8070707@neobeta.com> <200612182050.51750.cesare@ngi.it> <4586FC66.9060809@neobeta.com> Message-ID: <200612182259.10457.cesare@ngi.it> Alle 21:39, lunedì 18 dicembre 2006, Gabriele ha scritto: > No, in questo modo ottengo tutt'altro, poichè se il record > raggruppato con il valore1 non ottiene il massimo valore della > tabella non viene proprio visualizzato. Non penso che la funzione Max > mi possa servire, poichè la sua funzione è riferita sempre a tutti i > valori della tabella, mentre a me servirebbe qualcosa del tipo: "ho > bisogno del massimo valore tra tutti quelli che presentano un > medesimo valore in un altro campo" Ok, come ho scritto su php-it - dove ho detto un'altra castroneria - non devo stare in office fino a quest'ora :-P Secondo me l'unico modo x risolvere con una sola query è una subselect, su mysql 4.0 di sicuro non le hai, sul 4.1 non credo... -- Cesare D'Amico | Gruppo Volta Area tecnica | Web & Mkt Solutions Tel: 045 21 000 84 | Via Leida 8 - Verona Fax: 045 21 000 85 | http://www.gruppovolta.it From domenico.lorusso a pleiade.it Tue Dec 19 08:33:37 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Tue Dec 19 08:43:11 2006 Subject: [Db] [Mysql] Record distinti In-Reply-To: <4586DCD0.8020800@neobeta.com> References: <45904DB6.8070707@neobeta.com> <45865CD6.8050108@pleiade.it> <4590EA3D.50609@neobeta.com> <45865F37.5040300@vezz.it> <4590ED72.5020506@neobeta.com> <458667E8.2060302@pleiade.it> <4586DCD0.8020800@neobeta.com> Message-ID: <458795D1.6090804@pleiade.it> Gabriele ha scritto: > Domenico L. wrote: >> > Non penso sia difficile... voglio ottenere un record distinto per un > campo (valore1) e ordinato rispetto ad un altro campo (valore3), > portandomi dietro tutti gli altri campi che ho. > Vuoi questo? SELECT valore 1, ... , MAX(valore3) AS max_valore3 from ... GROUP BY valore1 order by max_valore3 altrimenti puoi provare così SELECT valore 1, ... , MAX(valore3) AS max_valore3 from ... GROUP BY valore1 order by MAX(valore3) La gestione dell'aliasing cambia da dbms a dbms cmq la sostanza è la stessa 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 Fri Dec 22 15:29:27 2006 From: domenico.lorusso a pleiade.it (Domenico L.) Date: Fri Dec 22 15:39:35 2006 Subject: [Db] Mysql 4.0 -> Mysql 5.1 Message-ID: <458BEBC7.3090804@pleiade.it> Ciao ragazzi, ci sono problemi di compatibilità in un upgrade di versione? Mi sapete indicare un elenco (con qualche esempio) e qualche commento [io intanto ravano sul sito di mysql] 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 domenico.lorusso a pleiade.it Fri Dec 22 15:49:27 2006 From: domenico.lorusso a pleiade.it (Domenico Lorusso) Date: Fri Dec 22 15:59:33 2006 Subject: [Db] [Reinvio] Mysql 4.0 -> Mysql 5.1 Message-ID: <458BF077.6060303@pleiade.it> Scusate ma non la vedo in lista Ciao ragazzi, ci sono problemi di compatibilità in un upgrade di versione? Mi sapete indicare un elenco (con qualche esempio) e qualche commento [io intanto ravano sul sito di mysql] ciauz P.S. la 5.1 è stabile? -- 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 ml a tassoman.com Sat Dec 23 08:52:03 2006 From: ml a tassoman.com (Tassoman (mailing)) Date: Sat Dec 23 09:07:26 2006 Subject: [Db] Mysql 4.0 -> Mysql 5.1 In-Reply-To: <458BEBC7.3090804@pleiade.it> References: <458BEBC7.3090804@pleiade.it> Message-ID: <1166860323.5833.21.camel@localhost> Il giorno ven, 22/12/2006 alle 15.29 +0100, Domenico L. ha scritto: > Ciao ragazzi, ci sono problemi di compatibilità in un upgrade di versione? > > Mi sapete indicare un elenco (con qualche esempio) e qualche commento > [io intanto ravano sul sito di mysql] > > ciauz Se metti mysql5 metti anche php5 -- Blogging humanum est, Tassoman ovest. http://blog.tassoman.com