View Full Version : [SQL]Errore in query..........
stefanoxjx
29-05-2009, 23:06
Ciao a tutti, sto facendo un piccolo lavoro su OpenOffice.org Base, però creando una ricerca mi da un errore in una query.
La query è questa:
SELECT "Gestore" AS "Gestore", "Data" AS "Data", SUM( "Importo €" ) AS
"Importo €", "Descrizione" AS "Descrizione" FROM "Versamenti" AS "Versamenti"
WHERE "Gestore" = 'TESTINGMARKET' ORDER BY "Data" ASC
Questa è una queri che viene generata automaticamente facendo le varie selezioni sui menù a tendina del database.
Se tolgo il "SUM" la query funziona, ma a me ovviamente servirebbe la somma dei valori :(
L'errore è questo:
http://www.essedisystem.it/varie/errorequery.jpg
Siccome l'SQL non l'ho mai usato, non capisco se è un errore su OO-Base o sulla query.
Qualcuno mi può aiutare?
Grazie.
Ciao.
stefanoxjx
29-05-2009, 23:10
Dimenticavo, se io provo una query di questo tipo:
SELECT SUM( "Importo €" ) AS "Importo €" FROM "Versamenti"
Mi restituisce la somma senza nessun errore!
La query non funziona perche' ha un errore, essenzialmente manca la clausola di GROUP BY.
Ma tutto dipende da che cosa hai all'inizio (ovvero il significato di quella tabella e di ciascuno dei suoi campi)
e di cosa vuoi ottenere alla fine.
stefanoxjx
29-05-2009, 23:44
La query non funziona perche' ha un errore, essenzialmente manca la clausola di GROUP BY.
Ma tutto dipende da che cosa hai all'inizio (ovvero il significato di quella tabella e di ciascuno dei suoi campi)
e di cosa vuoi ottenere alla fine.
Alla fine dovrebbe darmi una lista dei record con campo "Gestore" = 'TESTINGMARKET' e la somma di tutti i campi "Importo €"
Alla fine dovrebbe darmi una lista dei record con campo "Gestore" = 'TESTINGMARKET' e la somma di tutti i campi "Importo €"
Vorresti quindi la lista di tutti i dettagli di TestingMarketing e poi anche il totale di tutti i record insieme.
stefanoxjx
30-05-2009, 00:14
Vorrei la lista dei records con alla fine una riga con i totali del campo "Importo €". E' possibile?
Vorrei la lista dei records con alla fine una riga con i totali del campo "Importo €". E' possibile?
Si, ma non e' un risultato di una query tipica, quanto piu' un report fatto con l'SQL, che non si fa.
Una query SQL tipica restituisce dati tutti omoegenei, dello stesso tipo.
Ovviamente i record dei dettagli hanno un singificato diverso da quelli del totale.
Meglio 2 query, una per i dettagli, e una per il totale.
Ma chi e' che dovra' leggere questi dati? (Intendo quale programma di presentazione)
stefanoxjx
30-05-2009, 00:53
Si, ma non e' un risultato di una query tipica, quanto piu' un report fatto con l'SQL, che non si fa.
Una query SQL tipica restituisce dati tutti omoegenei, dello stesso tipo.
Ovviamente i record dei dettagli hanno un singificato diverso da quelli del totale.
Meglio 2 query, una per i dettagli, e una per il totale.
Ma chi e' che dovra' leggere questi dati? (Intendo quale programma di presentazione)
Io dovrò leggerli!!!
Ma come cavolo faccio a mettere due query?
Ci ho provato ma mi da sempre errore!
Sono riuscito a fare una query con GROUP BY che mi da solo i totali, ma io volevo la lista dei record con i valori dettagliati più il totale.
Le 2 query sarebbero proprio 2 queary, separate, ciascuna per il proprio scopo
SELECT *
FROM "Versamenti"
WHERE "Gestore" = 'TESTINGMARKET'
ORDER BY "Data" ASC
SELECT SUM( "Importo €" ) AS "Importo €" FROM "Versamenti"
Intendo quale programma di presentazione, so bene che li leggerai tu.
Quale programma lancera' queste query e cosa puo' fare con i risultati?
Openoffice?
Allora immagina di dover mettere sul foglio elettronico 2 zone
una per la prima query.
una per la seconda query.
stefanoxjx
30-05-2009, 10:21
Le 2 query sarebbero proprio 2 queary, separate, ciascuna per il proprio scopo
SELECT *
FROM "Versamenti"
WHERE "Gestore" = 'TESTINGMARKET'
ORDER BY "Data" ASC
SELECT SUM( "Importo €" ) AS "Importo €" FROM "Versamenti"
Infatti, ieri sera, ho provato a mettere due query una dopo l'altra ma mi da "Syntax Error in SQL expression".
Ho provato a scrivere la query in questo modo:
SELECT *
FROM "Versamenti"
WHERE "Gestore" = 'TESTINGMARKET'
ORDER BY "Data" ASC
SELECT SUM( "Importo €" ) AS "Importo €" FROM "Versamenti"
e mi da l'errore, mentre le due query scritte una alla volta funzionano perfettamente.
Intendo quale programma di presentazione, so bene che li leggerai tu.
Quale programma lancera' queste query e cosa puo' fare con i risultati?
Openoffice?
Ah, scusa!!!
Avendo scritto all'inizio della discussione che stavo lavorando su OpenOffice, credevo che tu mi stessi chiedendo un'altra cosa.
Prova a mettere un punto e virgola ;
alla fine di ciascuno statement.
come fai ad utilizzare mysql su open office ?
stefanoxjx
30-05-2009, 14:09
Prova a mettere un punto e virgola ;
alla fine di ciascuno statement.
L'avevo già provata questa soluzione, ma niente mi da sempre lo stesso errore e se entro nel dettaglio mi dice questo:
Stato SQL: HY000
Codice di errore: 1000
syntax error, unexpected $end, expecting BETWEEN or IN or SQL_TOKEN_LIKE
Non capisco se sono gli sviluppatori di OpenOffice che si sono inventati qualcosa di nuovo oppure se c'è qualche altro problema!
stefanoxjx
30-05-2009, 14:12
come fai ad utilizzare mysql su open office ?
Sto usando OpenOffice Base che lo usa già di suo.
Non l'avevo mai utilizzato prima, però devo dire che è gradevole da usare sia per l'impostazione dei formulari che per la creazione di tabelle ecc.
Mi sono un po' intrippato in questa cosa, però per il resto mi sembra bello :)
N.B. Ovviamente il mio è un parere di uno che database non ne ha mai usati :mbe:
Non stai usando MySQL ma HSQLDB:
http://www.hsqldb.org
che è il motore incorportato di Base. Il fatto che tu non possa eseguire più di una query è un limite di Base, puoi eseguirle una di seguito all'altra ma in due query salvate separatamente aprendo quindi due finestre separate.
Per ottenere il risultato che cerchi devi installare l'estensione Sun Report Builder, usare la prima query come sorgente dati ed aggiungere i campi calcolati nel report.
Se vuoi usare MySQL come backend devi installare il driver JDBC e creare una connessione con questo.
Quale programma lancera' queste query e cosa puo' fare con i risultati?
Openoffice?
Allora immagina di dover mettere sul foglio elettronico 2 zone
una per la prima query.
una per la seconda query.E' una cosa che si può materialmente fare, i file di Base sono generalmente registrati come sorgenti dati (tools -> options -> data sources).
Apri Calc, premi F4 naviga fino alle query che ti interessano e trascinale in un foglio.
stefanoxjx
30-05-2009, 16:18
Ah ecco!
Quanto rimpiango il vecchio Filing Assitant dell'IBM :(
Beh, anch'io sono :old: ma non lo rimpiango e sopratutto non rimpiango Dbase III e il dot prompt. :D
stefanoxjx
30-05-2009, 17:18
Beh, anch'io sono :old: ma non lo rimpiango e sopratutto non rimpiango Dbase III e il dot prompt. :D
Vero, però con il vecchio filing assistant in 5 minuti ti preparavi un database e in altrettanto un report.
La tecnologia è andata avanti, però non ho trovato un prodotto moderno che ti permetta di mettere in piedi velocemente come con filing assistant un piccolo database con possibilità di fare ricerche e report in tutte le salse.
Alla fine, con filing assistant avrei già fatto quello che mi serve e ci starei già lavorando, con le avanzate tecnologie del 2009, è da ieri che ci sto dietro e non ho ancora finito e a questo punto non so nemmeno se finirò :muro:
stefanoxjx
30-05-2009, 17:31
Un po' come Access
Rispetto a filing assistant access è già troppo macchinoso.
E' del tutto simile a openoffice base :)
Quello che cerchi lo potresti trovare in Lotus Approach, nella versione 9.5 era stato distribuito gratuitamente con PcProfessionale.
In Approach ogni vista possibile (tabella, report, form e cross-tab) è sempre "live" anche quando si crea o modifica la vista. Non credo però che sia più possibile avere la licenza se non a costi altissimi (circa 500€).
Sarà comunque dismesso da IBM a breve, Lotus Symphony è già stato rilasciato mentre SmarSuite (che comprendeva Approach) verrà abbandonato perchè big blue non detiene i diritti su tutto il codice.
stefanoxjx
30-05-2009, 17:56
Quello che cerchi lo potresti trovare in Lotus Approach, nella versione 9.5 era stato distribuito gratuitamente con PcProfessionale.
In Approach ogni vista possibile (tabella, report, form e cross-tab) è sempre "live" anche quando si crea o modifica la vista. Non credo però che sia più possibile avere la licenza se non a costi altissimi (circa 500€).
Sarà comunque dismesso da IBM a breve, Lotus Symphony è già stato rilasciato mentre SmarSuite (che comprendeva Approach) verrà abbandonato perchè big blue non detiene i diritti su tutto il codice.
Però non gira sotto linux :(
Ni, era nella compatibility list di Wine, Smartsuite è stato un prodotto famoso sopratutto per le capacità di reporting di Approach. Ovviamente uno screenshot non garantisce che il tuo db possa funzionare davvero.
stefanoxjx
03-06-2009, 17:59
Ok, bypassato problema precedente, ora ne avrei un altro!!!!!
Ho creato una query parametrica e fin qui tutto ok, però vorrei che mi facesse la ricerca ignorando il "case sensitive".
E' possibile?
Ok, bypassato problema precedente, ora ne avrei un altro!!!!!
Ho creato una query parametrica e fin qui tutto ok, però vorrei che mi facesse la ricerca ignorando il "case sensitive".
E' possibile?
....
WHERE Lower(campo) = Lower(parametro)
Dove Lower e' la funzione che trasforma da anycase a lowercase del motore specifico (ce l'hanno tutti, anche access)
stefanoxjx
03-06-2009, 18:29
....
WHERE Lower(campo) = Lower(parametro)
Dove Lower e' la funzione che trasforma da anycase a lowercase del motore specifico (ce l'hanno tutti, anche access)
Ti ringrazio della velocissima risposta :)
Purtroppo ho provato la soluzione che mi hai proposto, ma funziona in parte, nel senso che se faccio la query in questo modo:
SELECT "Gestore" AS "Gestore", "Data" AS "Data", "Importo €" AS "Importo €",
"Descrizione" AS "Descrizione", FROM "Prelevamenti" AS "Prelevamenti" WHERE
lower("Gestore") LIKE :Gestore ORDER BY "Data" ASC
funziona perfettamente con l'unico problema che chi digita il criterio di ricerca deve ricordarsi di digitarlo tutto in minuscolo.
Per ovviare a questo, ho provato a mettere la funzione lower anche dopo il like:
SELECT "Gestore" AS "Gestore", "Data" AS "Data", "Importo €" AS "Importo €",
"Descrizione" AS "Descrizione", FROM "Prelevamenti" AS "Prelevamenti" WHERE
lower("Gestore") LIKE lower(:Gestore) ORDER BY "Data" ASC
Non mi da nessun errore, però nemmeno mi chiede il criterio di ricerca :(
stefanoxjx
05-06-2009, 11:38
OK, sono arrivato alla conclusione che OpenOffice Base mi ha rotto!!!
Non mi permette di fare un cavolo di quello che mi serve!
Che voi sappiate, esiste sotto linux un prodotto simile che però usi mysql?
Grazie.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.