Newsgroup: it.comp.appl.access
Titolo: Confronto tra record

Ciao a tutti, vi espongo il mio problema a cui non riesco a trovare una
soluzione.
Ho una query con i seguenti campi:
DATA - ORARIO - N. CONS
Ho bisogno che il campo N. CONS mi visualizzi un numero progressivo a
seconda dell'orario visualizzato nel campo ORARIO, per tutti i record
dove DATA ha lo stesso valore.
Vi faccio un esempio: ho 2 record che hanno lo stesso valore nel campo
data (es 01-gen), due orari diversi nel campo ORARIO (es: 9.30 e
10.30). Io vorrei che nel campo calcolato N.CONS appaia 1 nel record
che ha come orario 9.30 e 2 nel record dove c'è l'orario 10.30.
Se il record successivo ha come data il 2 gennaio, dovrà nuovamente
comparire 1 nel campo N.CONS, e così via.
Tutto chiaro? Come posso fare?
Grazie, ciao!

Grazie, ciao!
Prego,
Ciao
-- 
Giorgio Rancati
[Office Access MVP]

 [Office Access MVP]
Grazie della risposta, ma non credo vada bene.
Io ho una sola tabella (T1) e il confronto deve essere fatto tra i
record di quella tabella.
In pratica bisognerebbe fare una scansione tra tutti i record che
ordini, per ogni recor che ha la stessa data, gli orari in maniera
crescente ed associ al campo calcolato N CONS un numero.
E' più chiaro?

E' più chiaro?
era chiaro anche prima.


giorgio rancati ha scritto:

Hai ragione! Scusa!
Funziona perfettamente, non pensavo fosse così semplice!
Effettivamente per una data che ha gli stessi orari dà dei valori
strani, tipo 8 o 16. C'è soluzione anche a questo problema (vorrei
avere tutti 1) oppure me lo tengo così (andrebbe bene comunque).
Grazie mille, ciao!

avere tutti 1) oppure me lo tengo così (andrebbe bene comunque).
se gli orari doppi li vuoi conteggiare una sola volta fai così
----
SELECT Tx1.Data,Tx1.Orario,Count(Tx2.Data) AS [N Cons]
FROM (SELECT DISTINCT * FROM T1) AS Tx1
     INNER JOIN (SELECT DISTINCT * FROM T1) AS Tx2
     ON Tx1.Data=Tx2.Data AND Tx1.Orario>=Tx2.Orario
GROUP BY Tx1.Data,Tx1.Orario
ORDER BY Tx1.Data,Tx1.Orario
----


 ha scritto nel
messaggio news:44ddd7ee$0$1003$5fc...@news.tiscali.it...
se hai Access97 bisogna cambiare le parentesi che delimitano le tabelle
derivate
----
SELECT Tx1.Data,Tx1.Orario,Count(Tx2.Data) AS [N Cons]
FROM [SELECT DISTINCT * FROM T1]. AS Tx1
     INNER JOIN [SELECT DISTINCT * FROM T1]. AS Tx2


 ha scritto nel
messaggio news:44ddd7ee$0$1003$5fc...@news.tiscali.it...
aspetta, sicuramente avrai un campo Id per identificare le righe in modo
univoco, in questo caso la Select Distinct * non ha effetto.
cosě č meglio
----
SELECT Tx1.Data,Tx1.Orario,Count(Tx2.Data) AS [N Cons]
FROM (SELECT DISTINCT Data,Orario FROM T1) AS Tx1
     INNER JOIN (SELECT DISTINCT Data,Orario FROM T1) AS Tx2


 [Office Access MVP]
Così è perfetto, ma, scusa la poca dimestichezza con sql, non riesco
a visualizzare anche il campo IDCliente, contenuto sempre nella tabella
T1. Se aggiungo alla prima riga T1.IDCliente, mi chiede di inserire un
parametro, come mai?

parametro, come mai?
Percho IDCliente non è esposto dalle tabelle derivate
per esporlo bisogna includerlo nella select
----
SELECT Tx1.Data,Tx1.Orario,Count(Tx2.Data) AS [N Cons]
FROM (SELECT DISTINCT IDCliente,Data,Orario FROM T1) AS Tx1
     INNER JOIN (SELECT IDCliente,DISTINCT Data,Orario FROM T1) AS Tx2
     ON Tx1.Data=Tx2.Data AND Tx1.Orario>=Tx2.Orario
GROUP BY Tx1.Data,Tx1.Orario
ORDER BY Tx1.Data,Tx1.Orario
----
però a questo punto bisogna vedere se vuoi il risultato progressivo 
raggruppato anche per cliente
ad esempio
----
SELECT Tx1.IDCliente,Tx1.Data,Tx1.Orario,Count(Tx2.Data) AS [N Cons]
FROM (SELECT DISTINCT IDCliente,Data,Orario FROM T1) AS Tx1
     INNER JOIN (SELECT DISTINCT IDCliente,Data,Orario FROM T1) AS Tx2
     ON Tx1.IDCliente=Tx2.IDCliente
     AND Tx1.Data=Tx2.Data
    AND Tx1.Orario>=Tx2.Orario
GROUP BY Tx1.IDCliente,Tx1.Data,Tx1.Orario
ORDER BY Tx1.IDCliente,Tx1.Data,Tx1.Orario
----
alla luce di questo nuovo campo bisogna vedere che risultato vuoi ottenere


giorgio rancati ha scritto:

Mi sembra perfetta la seconda query.
Grazie mille, hai risolto tutti i miei problemi.
Spero che sia utile anche ad altri.
Ciao