Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    QUERY con SELECT annidata come condizione

    Ciao a tutti!

    Avrei bisogno di una mano. Vi spiego prima cosa vorrei ottenere e poi cosa ho scritto (sparando a caso ).

    Ho una tabella in cui ho inserito i dati di alcune foto, e ad ogni foto è associata una data.

    Ora vorrei fare una query che mi restituisca tutte le foto con data uguale al mese più recente.
    NB: non voglio tutte le foto del mese corrente, ma quelle del mese più recente. Ad esempio, potremmo essere a settembre, ma le ultime foto inserite essere di agosto... per cui vorrei che mi restituisse tutte quelle di agosto.

    Sinceramente non sapevo se avrebbe funzionato... ma c'ho provato...

    SELECT DATA_foto, URL_foto
    FROM tbl_FOTO
    WHERE MONTH(DATA_foto)=MONTH(SELECT MAX(DATA_foto) FROM tbl_FOTO)

    Ovviamente non funziona.
    Ah... ovviemente per semplificare ho eliminato la parte che controlla l'anno... ma il funzionamento sarebbe identico a quello del mese, per cui poi lo aggiungo. Ora per snellire e semplificare, direi di lavorare su questa

    Grazie a chiunque mi darà una dritta!
    bYe!
    Andrea

  2. #2
    :master:

    codice:
    select ...., (select top 1 data_foto from tab_foto order by data_foto desc) as lastData
    where month(data_foto)=Month(lastData) and year(dataFoto)=year(lastData)
    e poi in che senso quella che hai postato te non funziona? da erroe la query o semplicemente non dava quello che ti aspetti?

  3. #3
    Normalmente le query le provo sempre tutte direttamente in ACCESS (e infatti mi sono dimenticato di dirvi che mi riferivo a questo DB).

    L'errore me lo da proprio access: "Corrispondenza errata nel numero di argomenti"

    Ora provo subito la tua... e ti faccio sapere!

  4. #4
    Allora... avevo già provato la strada che mi hai proposto (anche se in modo leggermente differente).

    codice:
    SELECT DATA_foto, URL_foto, COMMENTO_foto, (SELECT DISTINCT TOP 1 DATA_foto FROM tbl_FOTO ORDER BY DATA_foto DESC) AS LASTDATA
    FROM tbl_FOTO
    WHERE MONTH(DATA_FOTO)=MONTH(LASTDATA) AND YEAR(DATA_FOTO)=YEAR(LASTDATA)
    ORDER BY DATA_foto;
    Ci ho aggiunto un distinct nella tua query di select altrimenti mi restituiva più record con la stessa data.

    Purtroppo non funziona! Mi chiede di inserire il valore di lastdata?!?!?

  5. #5
    a me questa funziona correttamente (giorno è un campo date), mi sa che nella tua ti eri scordato una parentesi o no?

    codice:
    SELECT * from appuntamenti where month(giorno)=month((select max(giorno) from appuntamenti));

  6. #6
    O porca vacca... NON CI CREDO!

    Hai ragione... allora avevo azzeccato direttamente la prima pure io!

    Pero' boh... la seconda parentesi nel "MONTH" mi sembrava una ripetizione inutile!!!

    Ma dai... e io che ci stavo bestemmiando sopra da 2 giorni!!!

    codice:
    SELECT DATA_foto, URL_foto, COMMENTO_foto
    FROM tbl_FOTO
    WHERE MONTH(DATA_FOTO)=MONTH((SELECT MAX( DATA_foto)  FROM tbl_FOTO))
    ORDER BY DATA_foto;
    Funziona alla grande!
    Grazie!

  7. #7

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.