+ Rispondi alla Discussione
Risultati da 1 a 8 di 8

Non elencare nella select i duplicati dallo split

Ultimo Messaggio di artcava il:
  1. #1
    User
    Data Registrazione
    Aug 2008
    Messaggi
    31

    Non elencare nella select i duplicati dallo split

    Ciao non so come evitare la duplicazione dei risultati dallo split, premetto che lo script funziona
    Codice:
    <% loca = request.querystring("loc")  sql = "SELECT DISTINCT localita FROM offerte WHERE tipo = '" & request.querystring("mod") & "' GROUP BY localita" Set rs = Server.CreateObject("ADODB.Recordset") rs.Open sql, Conn, 3  if rs.eof then else %> <td > <select size="1" name="loc" onchange='this.form.submit()'>  <% rs.MoveFirst  Do While Not rs.EOF  controllo = rs.fields("localita")  arryControllo = Split(Controllo, ", ")   For i=0 to UBound(arryControllo)  stringa = Trim(arryControllo(i))  %>  <option value="<%=stringa%>"<%if loca = "" & stringa & "" then%>selected="selected"<%end if%> ><%=stringa%></option> <% Next  rs.MoveNext Loop rs.Close set rs = Nothing end if %>
    Grazie

  2. #2
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    268
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Ciao djjunior, prima domanda:

    Perché nel campo localita della tabella offerte ci sono campi separati da virgola?

    Ciò vuol dire che se nella prima riga ci sono "parma, firenze, modena" e nella seconda riga "torino, parma, milano", necessariamente nella tua lista avrai parma due volte...

  3. #3
    User
    Data Registrazione
    Aug 2008
    Messaggi
    31
    Ciao.. si nelle righe del campo località ci possono essere città replicate come indichi tu. Posso ovviare? E come? Grazie

  4. #4
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    268
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Rispettando la "Prima Forma Normale".
    Dovresti scomporre la colonna "localita" in una tabella dipendente dalla prima "offerte".

    A questo punto con una JOIN tra le due funzionerà anche la DISTINCT.

  5. #5
    User
    Data Registrazione
    Aug 2008
    Messaggi
    31
    Puoi farmi un esempio? Non ho capito come fare, grazie

  6. #6
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    268
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    La tabella "offerte" attualmente contiene le colonne tipo e localita, dovrebbe contenerne altre come ad esempio un IDOfferta o simili che dovrebbe essere la chiave della tabella.

    Se è così, dovresti creare una seconda tabella ("Localita" ad es.), che dovrebbe avere una sua chiave, un riferimento alla tabella "offerte" [ForeignKey], diciamo fkOfferte, e infine il nome della località (ad es. nome). Ogni riga di "Localita" contiene una sola località e il riferimento alla tabella "Offerte".

    A questo punto potrai eseguire una query di questo tipo:

    Codice:
    SELECT DISTINCT Localita.nome FROM Localita LEFT JOIN offerte WHERE offerte.tipo = '" & request.QueryString("mod") & "'
    Tutti i dati attualmente raccolti dovranno essere riversati nella nuova tabella con il riferimento (fkOfferte) giusto e d'ora in avanti dovrai salvare le località nella nuova tabella.

  7. #7
    User
    Data Registrazione
    Aug 2008
    Messaggi
    31
    Grazie ARTCAVA, creare una nuova tabella al momento sarebbe alquanto complicato perchè si tratterebbe di modificare il db.
    Mi hanno segnalato questo codice da sostituire allo split, ma non so come implementarlo al mio script, puoi darmi una mano?
    Codice:
    Function SplittaDistinct(str,sep)
        dim strx, sepx, arr, i, dic
        set dic=Server.CreateObject("Scripting.Dictionary")
        arr = Split(str,sep)
        strx=""
        sepx=""
        for i=LBound(arr) to UBound(arr)
            if not dic.Exists(arr(i)) then
                strx=strx & sepx & arr(i)
                dic.Add arr(i),true
                sepx=sep
            end if
        next
    Grazie

  8. #8
    Moderatore L'avatar di artcava
    Data Registrazione
    Dec 2006
    Località
    Torino
    Messaggi
    268
    Segui artcava su Twitter Aggiungi artcava su Google+ Aggiungi artcava su Facebook Aggiungi artcava su Linkedin Visita il canale Youtube di artcava
    Ciao djjunior, non vorrei sembrarti pedante, ma modificare il DB per me è mandatorio... Qualsiasi altro "accrocchio"-code sarebbe ridondante ed inutile, nonché ricettacolo di futuri problemi o errori.

    Scusami se sono schietto e diretto, ma questo è il mio modesto pensiero.

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.