Autore Topic: Conteggio record estratti da tabella MySQL  (Letto 1798 volte)

Offline Phoenix

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
Conteggio record estratti da tabella MySQL
« il: 10 Dicembre 2008, 12:42:23 »
Salve a tutti questa è il mio secondo quesito. Devo conteggiare il numero di record estratti da una tabella MySQL.

Non voglio utilizzare count(). Utilizzando PHP potrei usare "mysql_num_rows" ma in gambas come posso fare?

----------
Prendo spunto dell'argomento MySQL per porre una domanda per la distribuzione di un eventuale programma che ne faccia uso.

Quale potrebbe essere il modo migliore per installare un db? Crearlo al primo avvio del programma? In ogni caso dovrei avere i permessi per farlo, potrei far scegliere all'utente finale il nome e passwd di identificazione per averne i permessi ma se è un newbie?

Grazie per l'attenzione.

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Conteggio record estratti da tabella MySQL
« Risposta #1 il: 10 Dicembre 2008, 15:18:46 »
Ti posso rispondere che Result.Count esegue proprio la funzione mysql_num_rows, che non è di PHP, bensì fà parte della libreria basi di MySQL.
La cosa che non capisco è il perchè... Oltre al fare un SELECT COUNT(tua select), non vedo come tu possa ottenere lo stesso risultato... Il metodo Count esiste proprio per tale scopo.

Se per installazione del db, intendi la parte inclusa in un tuo prodotto, allora ti rispondo che dipende da cosa stai utilizzando, da cosa vuoi fare, e a chi è proposto...
Per un'applicazione gestionale, opterei per l'installazione completa, perchè non è detto che l'utente sia in grado di metter su, ad esempio, un server PostgreSQL o MySQL.
Il discorso implica anche una parte significativa: la sicurezza.
Come già accennato, l'utente potrebbe non avere la possibilità di metter in piedi un server, oppure di installare un database su un server esistente, e così via...
Come puoi notare, la tua domanda è piuttosto generica, e può essere interpretata in svariati modi; se forse ci dici cosa realmente vuoi ottenere, forse si possono tirare fuori suggerimenti più mirati.

Bye

Offline Phoenix

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
Re: Conteggio record estratti da tabella MySQL
« Risposta #2 il: 10 Dicembre 2008, 23:42:54 »
Intanto grazie per l'attenzione.

Forse stavo ubriaco ma oggi con $result.Count non riuscivo a fargli contare nulla... ho provato ora (tanto per non fare figuracce) e funziona tutto. Sorvoliamo che è meglio :-).

-------------------

Passiamo alla distribuzione di applicazioni che facciano uso di un db come MySQL.

Ora, nello sviluppare l'applicazione (una sorta di conteggio di ore di lavoro) utilizzo MySQL.

Molto probabilmente arriverà il giorno che la metterò a disposizione di tutti e qui mi sorge il problema. Come aggirare l'installazione e/o la configurazione di MySQL.
Devo creare uno script esterno per configurare il tutto (tabelle, campi ecc.)? In tal caso come procedere con i permessi?

Lo so che sembra una domanda banale, ma non credo che alla lunga basti un file di testo per tenere traccia delle informazioni del programma. O forse mi devo indirizzare ad utilizzare un altro db tipo SQLite (che proprio non conosco)?

Grazie per le eventuali risposte.

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Conteggio record estratti da tabella MySQL
« Risposta #3 il: 11 Dicembre 2008, 16:37:52 »
Usati nelle funzioni base, MySQL e SQLite si assomigliano tantissimo, tant'è che io ho convertito un mio gestionale da SQLite3 a MySQL semplicemente riscrivendo le mie funzioni di gestione in Gambas adattandole a MySQL (che richiede per la connessione qualche parametro in più, tipo host ecc...).

Per la creazione delle tabelle penso tu possa creare un semplice file di testo contenente le query SQL necessarie a tirar su tutto l'archivio di cui abbisogna il tuo programma. Non è difficile, perché basta creare il necessario e, prima di popolare eventuali tabelle, fare un backup del database usando
Codice: [Seleziona]
mysqldump --single-transaction --host=.. --user=.. --password= ..  nome_archivio > file_di_backup

che poi farai reimportare sul PC destinatario del tuo programma con
Codice: [Seleziona]
mysql --one-database nome_archivio < file_di_backup -u root -p

(qui dovrai inserire la password dell'utente root di MySQL).

Non sono bravissimo con la gesione dei DB con query SQL per cui qualcuno potrebbe suggerirti un modo più corretto/veloce/preciso.
Visita il mio sito personale: http://www.leonardomiliani.com

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Conteggio record estratti da tabella MySQL
« Risposta #4 il: 11 Dicembre 2008, 18:37:10 »
Per MySQL e PostgreSQL, l'idea dello script è basilare...

In questi giorni ho ben poco tempo, per cui non possa dare una mano più significativa, ma comunque posso dare un consiglio: fare in modo che lo script SQL venga eseguito da uno script sh/bash, lanciato da riga di comando, e che quest'ultimo abbia tutti i necessari accorgimenti per limitare al minimo eventuali casini. Per esempio: un log esaustivo durante l'installazione del database, anche rischiando di essere esasperante e palloso, fà parte del concetto; controlli su tutto quello che si stà eseguendo (inclusi semplici copie di file), e soprattutto l'estrazione del log prodotto da MySQL!
Sò che detto così è poco, ma quello che ho scritto sono una serie di suggerimenti ad evitare di incorrere nei soliti problemi durante le installazioni e, se accadono, i log dettagliati permetteranno analisi approfondite sul rilevamento delle cause.

Un'altro piccolo suggerimento: non basarsi esclusivamente sulle impostazioni del sistema operativo, a meno di non prevedere tutte le metodologie applicate dalle varie distribuzioni Linux (e Unix). Se si ha domestichezza con le shell, si può rilevare quasi tutto il rilevabile, in particolare su sistemi su cui sono state effettuate personalizzazioni non standard (es. MySQL installato su diverse directory, porte diverse, ecc.), e anche la possibilità di prevedere multiple istanze di server RDBMS (spesso accade, per diverse esigenze cui ora è troppo lungo spiegare...).

Per finire, ma non è mia intenzione far apparire la cosa più difficile di quanto sembri, è che una buona procedura di installazione si basa su un buon numero di elementi a cui fare bene attenzione.

Tutto qui... :-P

Spero di non averti spaventato... :-)

Offline Phoenix

  • Gamberetto
  • *
  • Post: 10
    • Mostra profilo
Re: Conteggio record estratti da tabella MySQL
« Risposta #5 il: 11 Dicembre 2008, 22:11:13 »
x md9327

Non mi hai per nulla spaventato, anzi, meglio ora che quando si è alla fine dell'opera ;-).

Grazie dei suggerimenti, hai pienamente ragione sui log, meglio scrivere qualche riga in più ora per creare il log che rompersi le ..... a trovare dove sta l'inghippo dopo :-)

x leo72

grazie per la sintassi dei comandi, ora non li dovrò cercare quando ne avrò bisogno.

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.482
    • Mostra profilo
Re: Conteggio record estratti da tabella MySQL
« Risposta #6 il: 11 Dicembre 2008, 23:11:04 »
se il programma che intendi fare non ha la necessita di interrogare il server mysql su un altro pc perche non usi sqlite3 ? in questo modo non devi preoccuparti di nulla per l' installazione dei driver e del db, infatti i "driver" vengono installati dal pacchetto gambas e la configurazione non esiste, sar+ direttamente il tuo prog che creera il database senza necessita di root.

Io ho usato spesso sqlite, mai mysql, quindi sono un po di parte :) ma cmq  valuta prima quali sono le tue esigenze e quelle del programma che devi realizzare, di conseguenza utilizzerai il db + adatto.

ciao ciao

Offline leo72

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 2.163
    • Mostra profilo
    • http://www.leonardomiliani.com
Re: Conteggio record estratti da tabella MySQL
« Risposta #7 il: 11 Dicembre 2008, 23:42:34 »
Effettivamente, se il DB non è di dimensioni rilevanti e dovrà essere consultato solo da un unico client, consiglio anch'io di seguire il suggerimento di fsurfing e di utilizzare SQLite3: è molto semplice, è veloce, e per le applicazioni stand-alone è molto indicato.

MySQL diventa consigliato se la tua applicazione deve condividere i dati con più client sparsi in una rete: allora l'idea di centralizzare il DB e connettersi ad esso dai vari computer si rivela vincente.
Visita il mio sito personale: http://www.leonardomiliani.com