Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
[Access] Errore somma con data
sabato 04 giugno 2005 - 20.27
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
sab 4 giu 2005 - 20:27
Salve ragazzi, ho un problema con due semplici tabelle, dove in una c'è
l'elenco di vari garage situati in varie parti d'italia, il prezzo di
parcheggio per una singola macchina nei garage, è gionaliero e varia a
secondo dei garage, l'altra tabella vengono registrati i vari parcheggi
effettuati nei giorni della settimana. Le due tabelle sono legate tra loro,
tramite l'id della tabella garage con il rispettivo valore nella tabella
parcheggio. Le due tabelle sono fatte in questo modo
garage id indirizzo citta nposto prezzo
1 via dei rami Trento 34 ? 30,00
2 via del nano Milano 23 ? 40,00
3 via baffigo Roma 198 ? 15,00
4 Via cristi Roma 20 ? 20,00
parcheggio id data garage automobile
1 15/05/2005 1 1
2 15/05/2005 2 1
3 07/06/2005 3 2
4 19/07/2005 2 3
5 22/05/2005 4 3
.
Io voglio sapere, la somma del prezzo di parcheggio, di tutti i garage che
si trovano a Roma, in cui dal giorno 01/05/2005 al 31/06/2005 sono state
parcheggiate delle macchine.
La query che ho fatto è la seguente:
SELECT Sum(G.prezzo) AS SommaDiprezzo
FROM garage AS G, parcheggio AS P
WHERE G.citta=['Inserisci città'] And G.id=P.garage and P.data between
01/05/2005 and 31/06/2005;
La cosa strana è che non viene rilevata nessuna somma, spero che qualcuno
potrà aiutarmi nel capire l'errore, grazie ;-)
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
sab 4 giu 2005 - 20:45
> Io voglio sapere, la somma del prezzo di parcheggio, di tutti i garage che
> si trovano a Roma, in cui dal giorno 01/05/2005 al 31/06/2005 sono state
> parcheggiate delle macchine.
> La query che ho fatto è la seguente:
>
> SELECT Sum(G.prezzo) AS SommaDiprezzo
> FROM garage AS G, parcheggio AS P
> WHERE G.citta=['Inserisci città'] And G.id=P.garage and P.data between
> 01/05/2005 and 31/06/2005;
>
> La cosa strana è che non viene rilevata nessuna somma, spero che qualcuno
> potrà aiutarmi nel capire l'errore, grazie ;-)
Ciao Juwan,
prima di tutto ti suggerisco di utilizzare la clausola JOIN per stabilire una relazione logica tra le due tabelle dato che la sintassi che hai utilizzato non aderisce allo standard ANSI.
Inoltre in questo modo utilizzerai la clausola WHERE solo per introdurre dei filtri e non per stabilire relazioni, ottenendo un codice molto più chiaro.
Inoltre in Access le date vanno passate nel formato americano e racchiuse tra il simbolo di cancelletto "#", ovvero #MM/DD/YYYY#.
In base a quanto detto la nuova query sarà:
SELECT Sum(G.prezzo) AS SommaDiprezzo
FROM garage AS G INNER JOIN parcheggio AS P
ON G.id=P.garage
WHERE G.citta=['Inserisci città']
AND P.data between #05/01/2005# AND #06/31/2005#;
Vedrai che così funziona ;-)
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
Juwan
Profilo
| Junior Member
76
messaggi | Data Invio:
sab 4 giu 2005 - 21:17
Grazie dell'aiuto ho visto che mettendo la data in formato americano e tra le # funziona, ma non funziona lo stesso tra il between della mia query :-(
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
sab 4 giu 2005 - 23:26
> Grazie dell'aiuto ho visto che mettendo la data in formato americano e tra le # funziona
Bene...
> ma non funziona lo stesso tra il between della mia query :-(
Funziona o non funziona? :-)
Qual è il problema?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
phate
Profilo
| Newbie
5
messaggi | Data Invio:
dom 5 giu 2005 - 10:21
>SELECT Sum(G.prezzo) AS SommaDiprezzo
>FROM garage AS G INNER JOIN parcheggio AS P
>ON G.id=P.garage
>WHERE G.citta=['Inserisci città']
>AND P.data between #05/01/2005# AND #06/31/2005#;
Prova senza between (anche se non capisco perchè non funziona). Fai così:
SELECT Sum(G.prezzo) AS SommaDiprezzo
FROM garage AS G INNER JOIN parcheggio AS P
ON G.id=P.garage
WHERE G.citta=['Inserisci città']
AND P.data > #05/01/2005#
AND P.data < #06/31/2005#;
Ciao
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
dom 5 giu 2005 - 10:56
>>SELECT Sum(G.prezzo) AS SommaDiprezzo
>>FROM garage AS G INNER JOIN parcheggio AS P
>>ON G.id=P.garage
>>WHERE G.citta=['Inserisci città']
>>AND P.data between #05/01/2005# AND #06/31/2005#;
>
>Prova senza between (anche se non capisco perchè non funziona). Fai così:
>
>SELECT Sum(G.prezzo) AS SommaDiprezzo
>FROM garage AS G INNER JOIN parcheggio AS P
>ON G.id=P.garage
>WHERE G.citta=['Inserisci città']
>AND P.data > #05/01/2005#
>AND P.data < #06/31/2005#;
Ciao phate,
La query che hai scritto *non è* equivalente alla mia, dato che l'operatore BETWEEN include anche gli estremi.
Un vecchio proverbio iniziava dicendo: "30 giorni ha novembre con aprile *GIUGNO* e settembre..." ;-)
Prova questa query:
SELECT Sum(G.prezzo) AS SommaDiprezzo
FROM garage AS G INNER JOIN parcheggio AS P
ON G.id=P.garage
WHERE G.citta=['Inserisci città']
AND P.data BETWEEN #05/01/2005# AND #06/30/2005#;
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://mvp.support.microsoft.com
http://italy.mvps.org
???
Profilo
| Newbie
7
messaggi | Data Invio:
lun 4 lug 2005 - 13:39
facile prova a mettere >= e <= invece di beetwen
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !