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

    [VB.NET] Come selezionare distinct valori da un dataset

    Salve, ho un problema che non so come risolvere. Ho guardato sul forum ma non sono riuscito a trovare molto.
    Data la query sql e la funzione selectPERdataset qui riportate
    codice:
     
    
    select  titolo, titolourl, foto, min(prezzo), codice, count(codice),marca   from prodotti,mercante where mercante=nome  and codice<>'-'    GROUP BY codice 
    
      Public Function selectPERdataset(ByVal strsql As String) As DataSet
            Dim dadap As OdbcDataAdapter
            Dim dset As DataSet
            dadap = New OdbcDataAdapter(strsql, objConn)
            dset = New DataSet("valori")
            dadap.Fill(dset, "valori")
            objConn.Close()
            Return dset
        End Function
    devo selezionare dal dataset i distinct valori della colonna marca.
    Come posso fare?

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ehm...domanda ovvia, non puoi farlo dalla query ?

  3. #3
    La query mi restituisce la colonna marca, ma in questa potrebbe essere presente più volte l'asus. Potrei ora operare una seconda query, ma farla su un vps esperno e su un db con oltre 2.000.000 di record mi ricjiede troppo tempo.

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    il DataTable interno al dataset ha il metodo SELECT. Usa Xpath come linguaggio per l'interrogazione.

    http://msdn.microsoft.com/it-it/libr...=vs.80%29.aspx

  5. #5
    Non riesco a capire cosa devo mettere in expression... sto impazzendo. Sono settimane che le provo tutte.

    codice:
    Private Sub GetRowsByFilter()
        
        Dim table As DataTable = DataSet1.Tables("Orders")
    
        ' Presuming the DataTable has a column named Date.
        Dim expression As String
        expression = "Date > '1/1/00'"
        Dim foundRows() As DataRow
    
        ' Use the Select method to find all rows matching the filter.
        foundRows = table.Select(expression)
    
        Dim i As Integer
        ' Print column 0 of each returned row.
        For i = 0 to foundRows.GetUpperBound(0)
           Console.WriteLine(foundRows(i)(0))
        Next i
    End Sub

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    il nome della colonna sul DB è "Date" e la data è la minima SQL Server ?

    Cosi' per prova, metti un'altra data, e stai attento al formato...

  7. #7
    Si, quello ci sono riuscito, ma se metto distinct marca (o altro).....Errore di sintassi: operando mancante dopo l'operatore 'nomeurl'.
    Non vorrei dovermi fare una selezione manuale sul datatable.
    Ho anche fatto la selezione su moneurl e marca, l'errore arriva con il distinct.

  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Non è SQL, è XPath. Per questo non riconosce "Distinct".

    Se non vuoi usare questo metodo, scandaglia il dataset (credo tu debba farlo con una procedurina che opera sui dataview con la proprietà RowFilter http://msdn.microsoft.com/it-it/library/13wb36xf.aspx) e filtra le righe.

    Ma secondo me faresti meglio a far fare questo lavoro a SQL Server con la query

  9. #9
    Il risultato lo vedi nel sito in firma. La categoria notebook impiega troppo ad eseguire la doppia query, una per i prodotti e una per i select distinct. Il tutto è ostato su un vps versione platinum. Il db conta quasi 2 milioni di record. Con una procedurina di scandaglio e un insert order ottimizzo perche effettuo ricerca e ordinamento su 1000 record max selezionati dalla prima query e non su 2.000.000 del db.

    Da 1 a 10 quanto è attualmente lento il sito? Confrontato con trovaprezzi?

    Magari poi edita questa parte perchè non vorrei fosse considerato link autopromozionale.

  10. #10
    la lentezza sulla select distinct potrebbe dipendere dalla query (postala) e/o dalla presenza di un indice sulla colonna

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.