Buongiorno.
Vi espongo il mio problema. Sto implementando un database per gestire una biblioteca.
In questo momento sto lavorando a una query che "pesca" dati in tre tabelle diverse:
- autori
- libri
- data fine lettura.
Il mio fine è avere una lista di libri ordinati in funzione delle date di lettura. Sono arrivato al risultato prefissato, tranne che per un aspetto: come era prevedibile, se i libri hanno più autori i record vengono ripetuti tante volte quanti sono gli autori. Quello a cui vorrei arrivare, è "dire" alla query di farmi vedere una sola riga per ogni libro (in questo caso non è importante il fatto di perdermi degli autori multipli per strada, dato che mi interessano i titoli e le date di lettura).
Ho pensato che posso filtrare il dato ID libro, che identifica univocamente ogni singolo volume, chiedendo di farmelo vedere una sola volta, ma non so proprio come arrivare a questo risultato. Mi sembra che Access non abbia una funzione (o almeno io non riesco a trovarla) che consenta questo. Va da sé che l'operazione non dovrà cancellare i duplicati ma soltanto nasconderli (nel senso di farmi vedere i dati duplicati una sola volta e basta).
Ho provato a intervenire in SQL con Distinct e Group by ma riesco soltanto a farmi restituire dei messaggi di errore.
Qui di seguito riporto il codice SQL funzionante ma che mi restituisce i dati ridondanti nel senso di cui sopra:
SELECT Autori.Cognome, Autori.Nome, Libri.Titolo, Libri.Sottotitolo, Libri.Copertina, [Fine lettura].[Data fine lettura], Libri.ID_Libro
FROM (Libri INNER JOIN (Autori INNER JOIN LibriAutori ON Autori.[ID_autore] = LibriAutori.[ID autore]) ON Libri.[ID_Libro] = LibriAutori.[ID libro]) INNER JOIN [Fine lettura] ON Libri.ID_Libro = [Fine lettura].ID_Libro
WHERE ((([Fine lettura].[Data fine lettura]) Is Not Null))
ORDER BY [Fine lettura].[Data fine lettura];
Ringrazio molto per l'attenzione. Buona giornata.