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

    [ACCESS VISUALBASIC]problema con select top

    salve a tutti.
    non so se quata sia la sezione giusta del forum e nel caso non lo fosse gradirei sapere dove postare.
    come da titolo ho un problema con la select top.
    spiego meglio devo selezionare solamente i primi tot articoli di ogni linea.
    io faccio la seguente query:
    codice:
    SELECT top 5 TbTempClaLinArt2.Art2, TbTempClaLinArt2.Descrizione, TbTempClaLinArt2.TotQta
    FROM TbTempClaLinArt2
    GROUP BY TbTempClaLinArt2.Linea2, TbTempClaLinArt2.Art2, TbTempClaLinArt2.Descrizione, TbTempClaLinArt2.TotQta;
    ma lei prende i primi 5 articoli in generale.
    ho cercato molto in rete ma non ho trovato nulla che mi potesse aiutare.
    potete aiutarmi voi??

    grazie mille!

  2. #2
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    E' giusto così. Pensaci...

    Tu vuoi i primi 5, ma non hai indicato la condizione sulla quale il database debba basarsi, cioè non hai indicato l'ORDER BY.

    codice:
    - Apri la finestra Immediate di VB6 (CTRL+G)
    - digita DISTINCTROW 
       non c'entra niente con il TOP, ma ti mostra la guida contestuale 
       del linguaggio SQL sui predicati tra cui anche il TOP [n] PERCENT. 
    - porta il cursore sopra la parola e premi F1 (si apre la guida SQL)
    Controlla dove parla del TOP, e vedi cosa avviene quando non indichi l'ORDER BY

    Ciao

  3. #3
    grazie per la tua risposta ma ci sono scritte tutte cose che avevo già letto.riguardo al mio caso non dice nulla.per il fatto dell'order by nel mio caso è indifferente in quanto dovrei ottenere 5 valori ogni volta che cambia la linea di appartenenza degli articoli.

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Non è vero, perchè il predicato TOP senza l'ORDER BY non funziona, e questo è un fatto fuori discussione.

    Se devi farlo per più linee di articoli, allora dovrai farlo per ogni linea.
    Forse puoi risolvere con una UNION che unisce più query, una per ogni linea.

    Ciao

  5. #5

    soluzione

    ringrazio tutti coloro che hanno risposto.ho trovato la soluzione e la posto qui nel caso in cui qualcun altro avesse il mio stesso problema!
    codice:
    SELECT TbTempClaLinArt1.Linea, TbTempClaLinArt1.DesLinea, TbTempClaLinArt1.Art, TbTempClaLinArt1.DesArt, TbTempClaLinArt1.TotQta, TbTempClaLinArt1.TotImp
    FROM TbTempClaLinArt1 
    WHERE (((TbTempClaLinArt1.Art) IN 
    (SELECT TOP 5 Art 
    FROM TbTempClaLinArt1 AS T 
    WHERE T.Linea = TbTempClaLinArt1.Linea 
    ORDER BY Art DESC)));

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244

    Re: soluzione

    Originariamente inviato da darksoullight88
    ringrazio tutti coloro che hanno risposto.ho trovato la soluzione e la posto qui nel caso in cui qualcun altro avesse il mio stesso problema!
    codice:
    SELECT TbTempClaLinArt1.Linea, TbTempClaLinArt1.DesLinea, TbTempClaLinArt1.Art, TbTempClaLinArt1.DesArt, TbTempClaLinArt1.TotQta, TbTempClaLinArt1.TotImp
    FROM TbTempClaLinArt1 
    WHERE (((TbTempClaLinArt1.Art) IN 
    (SELECT TOP 5 Art 
    FROM TbTempClaLinArt1 AS T 
    WHERE T.Linea = TbTempClaLinArt1.Linea 
    ORDER BY Art DESC)));
    Prego.
    Come vedi, era necessario l'ORDER BY :quote:

    Ciao

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.