Newsgroup: it.comp.appl.access
Titolo: Aiuto su Query

Salve a tutto il Ng.
Ho 2 tabelle cosě composte:
Interventi
-------------
Dataint          Data
Cliente          Testo
Descrizione  Testo
Clienti
-----------
Cliente       Testo
Indirizzo      Testo
Telefono     Testo
Relazioni   Clienti.Cliente-Interventi.Cliente   1 a molti
Il mio obiettivo č segnalare al Cliente che č trascorso 1 anno dall'ultimo
"Servizio" , quindi dovrei ottenere una lista di tutti gli Interventi di cui
nel Campo Descrizione troviamo la stringa "Servizio" ed č trascorso 1 anno
dalla data odierna rispetto alla Dataint dell'ultimo "Servizio" effettuato.
Il risultato della Query dovrebbe avere i seguenti campi :
Interventi.Dataint    Interventi.Cliente   Interventi.Descrizione
Clienti.Telefono
Mi auguro di essere stato esauriente nella spiegazione.
Grato di una cortese collaborazione.
Saluti.
Gianni

 ha scritto nel messaggio
news:8nmf1a$o8e$1...@nslave2.tin.it...

Immagino che la chiave primaria della tabella Interventi sia l'insieme dei
due campi Dataint e Cliente.
Il codice SQL della query č il seguente:
SELECT Interventi.Dataint, Interventi.Cliente, Interventi.Descrizione,
Clienti.Telefono
FROM Clienti INNER JOIN Interventi ON Clienti.Cliente = Interventi.Cliente
WHERE (((Interventi.Dataint)<Date()-365) AND ((Interventi.Descrizione) Like
"*Servizio*"))
ORDER BY Interventi.Cliente;
Roberto

Salve a tutto il NG.
Ho 2 Tabelle così composte:
Interventi
----------
Dataint         Data
Cliente         Testo
Descrizione  Testo
Clienti
------
Cliente          Testo
Indirizzo        Testo
Telefono        Testo
Relazione    Clienti.Cliente-Interventi.Cliente  1 a °°
Vorrei segnalare al Cliente che è trascorso 1 anno dall'ultimo Servizio,
quindi dovrei ottenere una lista di tutti gli Interventi in cui nel campo
Descrizione troviamo la stringa "Servizio"  ed è trascorso 1 anno dalla data
odierna rispetto all'ultimo "Servizio" effettuato.
La Query dovrebbe avere i seguenti campi:
Dataint.Interventi   Cliente.Interventi    Descrizione.Interventi
Telefono.Clienti
Spero di essere stato esauriente nella spiegazione.
Grazie per la cortese collaborazione.
Saluti
Gianni


Grazie per la gentile risposta. La chiave primaria è come da te immaginato.
Mi sembra però che manchi il controllo sul criterio "Ultimo Servizio" ovvero
1 anno è da considerare sull'ultimo record (Dataint-Cliente).
Mi spiego.
Consideriamo la seguente situazione:
Data di sistema        Date() = 20/08/00
Tabella Interventi con i seguenti records :
Dataint           Cliente           Descrizione
--------          -------           ------------
10/08/99        Topolino        Servizio
15/08/99        Paperino        Servizio
21/03/00        Pippo            Servizio
30/06/00        Topolino        Servizio
Il risultato che devo ottenere è :
Dataint            Cliente            Descrizione        Telefono
-------             ------             ------------        --------
15/08/99         Paperino         Servizio              0123456
Scusate nuovamente il disturbo.
Gianni

 ha scritto nel messaggio
news:8no056$200$1...@nslave1.tin.it...

E allora il codice SQL della query è questo:
SELECT First(Interventi.Dataint) AS PrimoDiDataint, Interventi.Cliente,
First(Interventi.Descrizione) AS PrimoDiDescrizione, First(Clienti.Telefono)
AS PrimoDiTelefono
FROM Clienti INNER JOIN Interventi ON Clienti.Cliente = Interventi.Cliente
GROUP BY Interventi.Cliente
HAVING (((First(Interventi.Dataint))<Date()-365) AND
((First(Interventi.Descrizione)) Like "*Servizio*"))
ORDER BY First(Interventi.Dataint) DESC;
Ciao
Roberto


Grazie per i suggerimenti forniti, senza i quali non avrei trovato soluzione
ai miei quesiti.
Ho trasformato la Query cosě:
SELECT Last(Interventi.Dataint) As
UltimoDiData,Interventi.Cliente,Clienti.Telefono
FROM Clienti RIGHT JOIN Interventi ON Clienti.Cliente = Interventi.Cliente
WHERE (((Interventi.Descrizione) LIKE "*Servizio*"))
GROUP BY Interventi.Cliente,Clienti.Telefono
HAVING(((Last(Interventi.Dataint))<Date()-365));
Ai primi test sommari, pare funzioni.
Saluti.
Gianni