Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di french
    Registrato dal
    Jun 2001
    Messaggi
    117

    Query con Top e Distinct

    Ciao a tutti. Ho un problema con una SQL.

    codice:
    sql = "SELECT TOP 3 ID_tab_principale,Data,Periodo,Prezzo,Tipo,Titolo FROM MiaQuery WHERE data >= " & DataOggi & " ORDER by Data ASC"
    MiaQuery è una query ottenuta direttamete su Access per unire i dati che mi servono da due tabelle relazionate. Come si può capire i record con "ID_tab_principale" possono essere più di uno ed "ID_tab_principale" è il campo id relativo al record alla tabella madre.
    Il mio problema sta nel fatto che vorrei fare un distinct sul campo "ID_tab_principale" in modo che mi restituisca, ad id uguale, solo la prima data utile risultante dalla query, e poi passi alle altre per un totale di 3.
    Spero di essere stato chiaro, perchè non è facile spiegare...

    Grazie a chi mi dà una mano.

    PS. "DataOggi" nella query non è sbagliato senza cancelletti, perchè in realtà le date le gestisco come campo numerico tipo aaaammgg.
    French

  2. #2
    Utente bannato
    Registrato dal
    Jun 2004
    Messaggi
    1,854
    mio problema sta nel fatto che vorrei fare un distinct sul campo "ID_tab_principale" in modo che mi restituisca, ad id uguale, solo la prima data utile risultante dalla query, e poi passi alle altre per un totale di 3.
    Spero di essere stato chiaro, perchè non è facile spiegare...

    cosa vuol dire per un totale di 3?
    ho capito bene, vuoi vedere gli ultimi tre inserimenti?

  3. #3
    Utente di HTML.it L'avatar di french
    Registrato dal
    Jun 2001
    Messaggi
    117
    codice:
    "Select Top3 ..WHERE data >= " & DataOggi & ".. ORDER by Data ASC"
    vuol dire le tre date più imminenti dalla data di oggi
    French

  4. #4
    Utente di HTML.it L'avatar di french
    Registrato dal
    Jun 2001
    Messaggi
    117
    Allora, ho fatto così:
    Eseguo due interrogazioni al database.
    Nella prima interrogazione mi ricavo i tre id (raggruppandoli) con le tre date minori.
    codice:
    sql_src = "SELECT Top 3 ID_tab_principale,Min(Data) FROM MiaQuery WHERE data >= " & DataOggi & " GROUP BY ID_tab_principale ORDER BY MIN(Data) ASC"
    Poi, con un ciclo, mi ricavo due stringhe, con 3 (o meno se non li trova) valori ognuna, separati da virgola rispettivamente degli id e delle date.

    codice:
    StrQry1=ID_tab_principale1, ID_tab_principale2, ID_tab_principale3
    StrQry2=Data1, Data2, Data3
    Nella seconda interrogazione seleziono i tre record filtrati dai valori ricavati nell'interrogazione precedente.

    codice:
    sql = "SELECT * FROM MiaQuery WHERE ID_tab_principale IN (" & StrQry1 & ") AND Data IN (" & StrQry2 & ")"
    Non so se sia il metodo migliore, ma funziona. Se qualcuno mi sa consigliare qualcosa di meglio, magari utilizzando una sola interrogazione, accetto volentieri.
    French

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 © 2026 vBulletin Solutions, Inc. All rights reserved.