PDA

Visualizza la versione completa : [ACCESS] Selezione ultimo record


maxxl
06-12-2005, 11:29
Ciao...
Spero sia il posto giusto per risolvere un problema con una query di access...

Ho 2 tabelle

Tabella Lavoro
IDLavoro
Lavoro
....
....
....

Tabella Avanzamento
IDavanzamento
IDLavoro
Note
Consegna


ogni Lavoro ovviamente ha più avanzamenti.

Vorrei selezionare tutti i lavori ma solo l'ultimo avanzamento di ogni lavoro... come posso fare??

Grazie
Max

ladyBlu
06-12-2005, 11:44
Ritengo che il campo Consegna sia una data.

Quindi la query da eseguire è questa:


SELECT tbLavori.IDLavoro, tbLavori.Lavoro, tbAvanzamento.Note,
Max(tbAvanzamento.Consegna) AS MaxDiConsegna
FROM tbAvanzamento RIGHT JOIN tbLavori ON
tbAvanzamento.IDLavoro = tbLavori.IDLavoro
GROUP BY tbLavori.IDLavoro, tbLavori.Lavoro, tbAvanzamento.Note;



:ciauz:

alka
06-12-2005, 11:49
Originariamente inviato da maxxl
Spero sia il posto giusto per risolvere un problema con una query di access...

Il posto è giusto, ma nel titolo andrebbe indicato il linguaggio o il database di riferimento. :)

Leggi il nostro Regolamento (http://forum.html.it/forum/showthread.php?s=&threadid=862017) per conoscere questa ed altre norme e suggerimenti utili.

Correggo io il titolo di questa discussione.

Ciao! :ciauz:

maxxl
06-12-2005, 12:26
Scusate per il titolo :jam:


Ho provato così



SELECT [Info Commessa_rep].*, [Tabella Avanzamenti].Brief,Max( [Tabella Avanzamenti].Consegna) AS Max
FROM [Tabella Avanzamenti] INNER JOIN [Info Commessa_rep] ON [Tabella Avanzamenti].IDCommessa =
[Info Commessa_rep].IDCommessa;


ma mi da questo errore

"impossibile eseguire una query che non include l'espressione "IDCommessa" specificata come parte di una funzione di aggregazione"

?????? :dhò:

ladyBlu
06-12-2005, 12:33
aggiungi la GROUP BY alla fine dell'istruzione :)

maxxl
06-12-2005, 12:40
In che maniera???

SELECT [Info Commessa_rep].*, [Tabella Avanzamenti].Brief,Max( [Tabella Avanzamenti].Consegna) AS Max
FROM [Tabella Avanzamenti] INNER JOIN [Info Commessa_rep] ON [Tabella Avanzamenti].IDCommessa = [Info Commessa_rep].IDCommessa
GROUP BY [Tabella Avanzamenti].Consegna;

cosi??
ma mi da errore :bhò:

maxxl
06-12-2005, 12:51
ho tolto l'asterisco ma mi da tutti gli avanzamenti e non solo l'ultimo!!!!!



SELECT [Info Commessa_rep].IDCommessa, [Info Commessa_rep].[Data Apertura], [Info Commessa_rep].[Rif Preventivo], [Info Commessa_rep].IDCliente, [Info Commessa_rep].Lavoro, [Info Commessa_rep].[Tabella Commessa].IDGrafico, [Info Commessa_rep].IDAccount, [Info Commessa_rep].[Totale Ore], [Info Commessa_rep].Note, [Info Commessa_rep].[Data Chiusura], [Info Commessa_rep].Account, [Info Commessa_rep].Società, [Info Commessa_rep].[Tabella Grafici].IDGrafico, [Info Commessa_rep].Grafico, [Info Commessa_rep].Indirizzo, [Info Commessa_rep].Località, [Info Commessa_rep].CAP, [Info Commessa_rep].[Stato/Provincia], [Info Commessa_rep].Contatto1, [Info Commessa_rep].Banca, [Info Commessa_rep].ContoCorrente, [Info Commessa_rep].ABI, [Info Commessa_rep].CAB, [Info Commessa_rep].P_Iva, [Info Commessa_rep].Pagamento, [Info Commessa_rep].NumeroTel, [Info Commessa_rep].NumeroFax, [Tabella Avanzamenti].Brief, Max([Tabella Avanzamenti].Consegna) AS [Max]
FROM [Tabella Avanzamenti] INNER JOIN [Info Commessa_rep] ON [Tabella Avanzamenti].IDCommessa = [Info Commessa_rep].IDCommessa
GROUP BY [Info Commessa_rep].IDCommessa, [Info Commessa_rep].[Data Apertura], [Info Commessa_rep].[Rif Preventivo], [Info Commessa_rep].IDCliente, [Info Commessa_rep].Lavoro, [Info Commessa_rep].[Tabella Commessa].IDGrafico, [Info Commessa_rep].IDAccount, [Info Commessa_rep].[Totale Ore], [Info Commessa_rep].Note, [Info Commessa_rep].[Data Chiusura], [Info Commessa_rep].Account, [Info Commessa_rep].Società, [Info Commessa_rep].[Tabella Grafici].IDGrafico, [Info Commessa_rep].Grafico, [Info Commessa_rep].Indirizzo, [Info Commessa_rep].Località, [Info Commessa_rep].CAP, [Info Commessa_rep].[Stato/Provincia], [Info Commessa_rep].Contatto1, [Info Commessa_rep].Banca, [Info Commessa_rep].ContoCorrente, [Info Commessa_rep].ABI, [Info Commessa_rep].CAB, [Info Commessa_rep].P_Iva, [Info Commessa_rep].Pagamento, [Info Commessa_rep].NumeroTel, [Info Commessa_rep].NumeroFax, [Tabella Avanzamenti].Brief;


HELP :cry:

ladyBlu
06-12-2005, 12:54
max per prima cosa non è possibile eseguire una group by su campi della select chiamati con NomeTabella.*, quindi dovrai modificare la query inserendo tutti i campi della tabella Info Commessa_rep

Aggiusta questa query secondo quanto serve a te, ho cercato di modificare i campi in base alle poche informazioni che hai dato sulla struttura delle tue tabelle, quindi dovrai fare da solo; comunque l'istruzione scritta così funziona, devi solo risistemare i campi:


SELECT [Tabella Avanzamenti].Brief,
Max([Tabella Avanzamenti].Consegna) AS MaxDiConsegna,
[Info Commessa_rep].IDCommessa, [Info Commessa_rep].Commessa
FROM [Tabella Avanzamenti] RIGHT JOIN [Info Commessa_rep] ON
[Tabella Avanzamenti].IDCommessa = [Info Commessa_rep].IDCommessa
GROUP BY [Tabella Avanzamenti].Brief,
[Tabella Avanzamenti].Consegna,
[Info Commessa_rep].IDCommessa,
[Info Commessa_rep].Commessa


:ciauz:

ladyBlu
06-12-2005, 12:59
max puoi farmi un esempio di record contenuti nelle tabelle?

Cioè, vorrei sapre una riga della tabella Info... e una o più corrispondenti in TabellaAvanzamenti.
Così vedo di darti una mano. :)

maxxl
06-12-2005, 13:00
SELECT [Tabella Avanzamenti].Brief, Max([Tabella Avanzamenti].Consegna) AS MaxDiConsegna, [Info Commessa_rep].IDCommessa, [Info Commessa_rep].Lavoro
FROM [Tabella Avanzamenti] INNER JOIN [Info Commessa_rep] ON [Tabella Avanzamenti].IDCommessa = [Info Commessa_rep].IDCommessa
GROUP BY [Tabella Avanzamenti].Brief, [Info Commessa_rep].IDCommessa, [Tabella Avanzamenti].Consegna, [Info Commessa_rep].Lavoro;


:dhò:
niente da fare me li da tutti e non uno...

P.S. alcuni campi consegna sono vuoti... che sia quello????

Loading