Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    Query per articoli più venduti

    Ho due tabelle, TabellaOrdini che contiene lo storico degli oggetti venduti con colonna IDarticolo e Quantità venduta (*), e TabellaArticoli che contiene sempre IDarticolo e le varie caretteristiche di ogni articolo (nome, prezzo, descrizione,etc).
    Vorrei tirare fuori i 10 articoli più venduti, qual'è la sinstassi corretta della query sql?
    Grazie


    (*) ad ogni vendita viene creato un nuovo record, quindi ci possono essere record con lo stesso IDarticolo ma con quantità diverse..

  2. #2
    arieccomi, sono riuscito a ottenere l'elenco del nome prodotto con la quantità venduta, utilizzando questa query:

    sqlTopSellers = "SELECT TOP 10 SUM(tblOrderItems.ItemQuant) AS Somma, tblElements.ElemName FROM tblOrderItems INNER JOIN tblElements ON tblOrderItems.ItemID = tblElements.ElemID GROUP BY ElemName"

    però ho due problemini:

    1- mi tira fuori i primi dieci risultati in tabella, mentre ho bisogno dei primi 10 in ordine di "Somma", ho provato con "ORDER BY Somma DESC" da da errore..
    2- perchè se cerco di visualizzare oltre al nome (ElemName) anche il suo ID (ElemID) mi da errore?
    esempio: con rs("ElemName") ottengo il nome articolo, ma se scrivo rs(ElemID) mi da errore..

    Grazie

  3. #3
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    1) Quale errore?
    2) Ogni campo che desideri estrarre lo devi aggiungere alla SELECT e contestualmente alla GROUP BY

    Roby

  4. #4
    Ciao Roby,

    1) 500 - Internal server error.
    Non c'è modo di visualizzare il messaggio esteso dell'errore.. che dipenda da Register.it?
    2) Quindi come dovrei modificare la sql? Così:
    sqlTopSellers = "SELECT TOP 10 SUM(tblOrderItems.ItemQuant) AS Somma, tblElements.ElemName, tblElements.ElemID FROM tblOrderItems INNER JOIN tblElements ON tblOrderItems.ItemID = tblElements.ElemID GROUP BY ElemName, Elem ID "

    Grazie mille!

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    1) devi disabilitare gli errori http brevi dal menu strumenti opzioni internet del browser
    2) l'hai provata anche direttamente nel db?

    Roby

  6. #6
    1) si si lo so che devo disattivare gli errori brevi, ma nulla, sia su IE 8 che 9.. cosa strana..

    2) no... ma secondo te l'sql così strutturata è giusta?

  7. #7
    risolto il punto 2)
    adesso mi rimane solo il punto 1) .. non capisco perchè mi da errore a "ORDER BY Somma DESC"..
    che "GROUP BY" e "ORDER BY" non possano andare nella stessa query??
    come posso fare?

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Se ci fai vedere quello che hai scritto...

    Roby

  9. #9
    ecco qua:

    sqlTopSellers = "SELECT TOP 10 SUM(tblOrderItems.ItemQuant) AS Somma, tblElements.ElemName, tblElements.ElemID FROM tblOrderItems INNER JOIN tblElements ON tblOrderItems.ItemID = tblElements.ElemID GROUP BY ElemName, ElemID"

    così va bene ma non me li ordina per quantità dal più venduto al meno venduto..

    se faccio così mi da errore:

    sqlTopSellers = "SELECT TOP 10 SUM(tblOrderItems.ItemQuant) AS Somma, tblElements.ElemName, tblElements.ElemID FROM tblOrderItems INNER JOIN tblElements ON tblOrderItems.ItemID = tblElements.ElemID GROUP BY ElemName, ElemID ORDER BY Somma DESC "

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Prova con ORDER BY 1 non so se funziona con Access.

    Roby

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.