+ Rispondi al Thread
Pagina 2 di 5 primaprima 1234 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 42

Discussione: Problema con query

  1. #11
    ettorpa non è in linea Novello
    Post
    28
    Grazie birby sei grande!!!

  2. #12
    L'avatar di birby
    birby non è in linea Scolaretto
    Luogo
    Brescia
    Post
    124
    Quote Originariamente inviato da ettorpa Visualizza il messaggio
    Grazie birby sei grande!!!
    Esagerato !
    Lieto di esserti stato utile, buon lavoro


  3. #13
    ettorpa non è in linea Novello
    Post
    28
    Birby,
    Scusami, ho adattato la query come mi hai suggerito tu e funziona benissimo..tranne per il fatto che le ultime 3 colonne (min,medio,max) sono tutte uguali al campo "prezzo_concorrenza"....è come se avesse un solo parametro di riferimento.
    Esempio:
    prezzo_concorrenza=2,80
    prezzo_minimo_concorrenza=2,80
    prezzo_medio_concorrenza=2,80
    prezzo_massimo_concorrenza=2,80
    ho forse sbagliato in qualcosa?

    Per snellire un pò il codice ho omesso l'html....ti posto la pagina:
    codice:
    strSQL = "SELECT id, concorrente, code, data_reg,description, prezzo_concorrenza,xnote,code_oem, grammi_sea, grammi_con, price,MIN(prezzo_concorrenza) AS minimo, AVG(prezzo_concorrenza) AS medio, MAX(prezzo_concorrenza) AS massimo FROM Dati2 GROUP BY id, concorrente, code, description, data_reg,xnote,code_oem, grammi_sea, grammi_con, prezzo_concorrenza,price HAVING code Like 'F300SA%'OR id Like '%F300SA%'OR description Like '%F300SA%'ORDER BY code"
             
    <%=Server.HTMLEncode(rs("data_reg"))%>
    <%=Server.HTMLEncode(rs("concorrente"))%>
    <%=Server.HTMLEncode(rs("code"))%>
    <%Response.write "" & Rs ("description") & "" & ""%>
    <%Response.write "" & Rs ("code_oem") & "" & ""%>
    <%Response.write "" & Rs ("grammi_sea") & "" & ""%>
    <%Response.write "" & Rs ("grammi_con") & "" & ""%>
    <%Response.write "" & Rs ("xnote") & "" & ""%>
    <%Response.write "" & Rs ("price") & "" & ""%>
    <%Response.write "" & Rs ("prezzo_concorrenza") & "" & ""%>
    <%Response.write "" & Rs ("minimo") & "" & ""%>
    <%Response.write "" & Rs ("medio") & "" & ""%>
    <%Response.write "" & Rs ("massimo") & "" & ""%>
    Ragionandoci un pò, probabilmente è proprio così che deve funzionare...ma agisce solo sullo stesso record e non tiene in considerazione gli altri record da confrontare..mentre a me servirebbe che facesse il confronto con tutti gli altri record.
    Ora funziona in questo modo:

    codice:
    Concorrente,  Code,     Description, Grm_sea, Grm_con,          Pz_Sea , Pz_Conc ,Prezzo_min, Pz_med , Pz_max
    TIZIO        F200SA1610  TONER       80            90           1,56       2,40       2,40              2,40      2,40
    
    Concorrente,  Code,     Description, Grm_sea, Grm_con,         Pz_Sea , Pz_Conc ,Prezzo_min, Pz_med , Pz_max
    CAIO        F200SA1610  TONER       80            90           1,56       1,69       1,69              1,69      1,69
    
    Concorrente,  Code,      Description, Grm_sea, Grm_con,        Pz_Sea , Pz_Conc ,Prezzo_min, Pz_med , Pz_max
    SEMP..        F200SA1610  TONER       80            90           1,56       1,80      1,80              1,80      1,80
    Dovrebbe farmi il min,la media e il massimo su TIZIO,CAIO,SEMPRONIO ETC... e non solo su TIZIO o solo su CAIO o solo su SEMPRONIO
    In poche parole x codice,concorrente,prezzo...tutti i campi.
    Ultima modifica di ettorpa; 09-08-2012 14:21 

  4. #14
    L'avatar di birby
    birby non è in linea Scolaretto
    Luogo
    Brescia
    Post
    124
    Ciao, ho capito il problema e ti spiego...
    Prendiamo la nostra query :
    codice:
    SELECT id, concorrente, code, data_reg, description, prezzo_concorrenza, xnote, code_oem, grammi_sea, grammi_con, price, 
    MIN(prezzo_concorrenza) AS minimo, AVG(prezzo_concorrenza) AS medio, MAX(prezzo_concorrenza) AS massimo 
    FROM Dati2 
    GROUP BY id, concorrente, code, description, data_reg,xnote,code_oem, grammi_sea, grammi_con, prezzo_concorrenza,price 
    HAVING code Like 'F300SA%'OR id Like '%F300SA%'OR description Like '%F300SA%'ORDER BY code"
    non possiamo aggregare per il campo "prezzo_concorrenza" !! (errore mio scusa)
    Prova a togliere il campo "prezzo_concorrenza" sia dalla SELECT che dalla GROUP BY, così:
    codice:
    SELECT id, concorrente, code, data_reg, description, xnote, code_oem, grammi_sea, grammi_con, price, 
    MIN(prezzo_concorrenza) AS minimo, AVG(prezzo_concorrenza) AS medio, MAX(prezzo_concorrenza) AS massimo 
    FROM Dati2 
    GROUP BY id, concorrente, code, description, data_reg,xnote,code_oem, grammi_sea, grammi_con, price 
    HAVING code Like 'F300SA%'OR id Like '%F300SA%'OR description Like '%F300SA%'ORDER BY code"
    Se il campo "price" (che se non sbaglio è il tuo prezzo) è soggetto a frequenti variazioni, sarebbe meglio toglierlo dalla query... o meglio potresti calcolarne minimo, medio e massimo... (togliendolo dalla SELECT e dalla GROUP BY)

    Ultima modifica di birby; 09-08-2012 16:03 

  5. #15
    ettorpa non è in linea Novello
    Post
    28
    Ciao Birby, ti ringrazio innanzitutto per la tua grande disponibilità nei miei confronti.

    Allora il campo "price" sarebbe il mio prezzo del listino e non subisce variazioni...ed è fisso per ogni articolo.

    Togliendo il campo "prezzo_concorrenza" sia dalla select che dal GROUP BY, ottengo sempre quanto descritto sopra...non sembra cambiare nulla

  6. #16
    L'avatar di birby
    birby non è in linea Scolaretto
    Luogo
    Brescia
    Post
    124
    Quote Originariamente inviato da ettorpa Visualizza il messaggio
    Ciao Birby, ti ringrazio innanzitutto per la tua grande disponibilità nei miei confronti.

    Allora il campo "price" sarebbe il mio prezzo del listino e non subisce variazioni...ed è fisso per ogni articolo.

    Togliendo il campo "prezzo_concorrenza" sia dalla select che dal GROUP BY, ottengo sempre quanto descritto sopra...non sembra cambiare nulla
    Allora c'è qualcos'altro che ci sfugge...
    Sicuramente non possiamo raggruppare per il campo "prezzo_concorrenza" e questo è un fatto; a questo punto ti suggerirerei di procedere partendo da una query minimale che abbia nella SELECT (e quindi nella GROUP BY) solo i campi che effettivamente ti servono per confrontare il tuo prezzo con i prezzi della concorrenza. Ad esempio:
    codice:
    SELECT id, concorrente, description, code,  price, 
    MIN(prezzo_concorrenza) AS minimo, AVG(prezzo_concorrenza) AS medio, MAX(prezzo_concorrenza) AS massimo 
    FROM Dati2 
    GROUP BY id, concorrente, description, code, price 
    HAVING code Like 'F300SA%'OR id Like '%F300SA%'OR description Like '%F300SA%'ORDER BY code"
    =====
    CASO A
    Se con questa query ottieni il risultato voluto, puoi iniziare ad aggiungere UNO alla volta gli altri campi . Naturalmente, ad ogni aggiunta di un nuovo campo, dovrai provare la query (mantenendo fisso, durante questi test, il parametro di ricerca).
    Penso che ad un certo punto ti accorgererai che uno dei campi inclusi nella query, ti "diluisce" (passami il termine) il raggruppamento influendo sul risultato finale.
    =====
    CASO B
    Se la query non fornisce il risultato voluto, riducila ai minimi termini:
    codice:
    SELECT concorrente, code 
    MIN(prezzo_concorrenza) AS minimo, AVG(prezzo_concorrenza) AS medio, MAX(prezzo_concorrenza) AS massimo 
    FROM Dati2 
    GROUP BY concorrente, code
    HAVING code Like 'F300SA%'
    e se ottieni il risultato voluto, ti troverai nel CASO A e potrai procedere ad aggiungere campi nella query.
    In bocca al lupo.


  7. #17
    ettorpa non è in linea Novello
    Post
    28
    Grazie birby,

    Ho provato tutte le varianti delle query ma il risultato è sempre lo stesso...identico.
    Sarà una sensazione ma l'HAVING non mi convince molto.

    vabbè dai non voglio stressarti, sei stato molto gentile con me...magari al rientro delle ferie, saremo tutti più rilassati

  8. #18
    ettorpa non è in linea Novello
    Post
    28
    La cosa che mi fa più incuriosire: nella vecchia pagina mi funziona tutto, però è strutturata diversamente e mi restituisce solo 1 record alla volta.

    form_codice.asp:

    codice:
    strSQL = "Select * from Dati2 where ID like '%" & Cerca & "%' or code like '%" & Cerca & "%' or description like '%" & Cerca & "%' order by code asc"

    codice:
    <%=Server.HTMLEncode(rs("data_reg"))%>
    <%=Server.HTMLEncode(rs("concorrente"))%>
    <%=Server.HTMLEncode(rs("code"))%>
    <%Response.write "" & Rs ("description") & "" & ""%>
    <%Response.write "" & Rs ("code_oem") & "" & ""%>
    <%Response.write "" & Rs ("grammi_sea") & "" & ""%>
    <%Response.write "" & Rs ("grammi_con") & "" & ""%>
    <%Response.write "" & Rs ("xnote") & "" & ""%>
    <%Response.write "" & Rs ("price") & "" & ""%>
    <%Response.write "" & Rs ("prezzo_concorrenza") & "" & ""%>
    <%set rs=cn.execute ("Select MIN(prezzo_concorrenza) as minimo from Dati2 WHERE code LIKE '%" & Cerca & "%' ")%><%response.write ""&rs("minimo")%>
    <%set rs=cn.execute ("Select AVG(prezzo_concorrenza) as media from Dati2 WHERE code LIKE '%" & Cerca & "%' ")%><%response.write ""&rs ("media")%>
    <%set rs=cn.execute ("Select MAX(prezzo_concorrenza) as massimo from Dati2 WHERE code LIKE '%" & Cerca & "%' ")%><p align="center">%response.write ""&rs ("massimo")%></font></p>

  9. #19
    L'avatar di birby
    birby non è in linea Scolaretto
    Luogo
    Brescia
    Post
    124
    Quote Originariamente inviato da ettorpa Visualizza il messaggio
    Grazie birby,

    Ho provato tutte le varianti delle query ma il risultato è sempre lo stesso...identico.
    Sarà una sensazione ma l'HAVING non mi convince molto.

    vabbè dai non voglio stressarti, sei stato molto gentile con me...magari al rientro delle ferie, saremo tutti più rilassati
    uhmmmm ... ripeto, qualcosa sfugge.
    Tuttavia ho provato su un mio DB con i campi della query e sembra avere il comportamento corretto...
    Sarebbe interessante avere la struttura COMPLETA della tabella Dati2 e dei record di prova ...
    Se vuoi mandarmi il materiale contattami, io la prossima settimana sono in ferie e magari un'ora per provare la trovo...


  10. #20
    L'avatar di birby
    birby non è in linea Scolaretto
    Luogo
    Brescia
    Post
    124
    Quote Originariamente inviato da ettorpa Visualizza il messaggio
    La cosa che mi fa più incuriosire: nella vecchia pagina mi funziona tutto, però è strutturata diversamente e mi restituisce solo 1 record alla volta.

    form_codice.asp:

    codice:
    strSQL = "Select * from Dati2 where ID like '%" & Cerca & "%' or code like '%" & Cerca & "%' or description like '%" & Cerca & "%' order by code asc"

    codice:
    <%=Server.HTMLEncode(rs("data_reg"))%>
    <%=Server.HTMLEncode(rs("concorrente"))%>
    <%=Server.HTMLEncode(rs("code"))%>
    <%Response.write "" & Rs ("description") & "" & ""%>
    <%Response.write "" & Rs ("code_oem") & "" & ""%>
    <%Response.write "" & Rs ("grammi_sea") & "" & ""%>
    <%Response.write "" & Rs ("grammi_con") & "" & ""%>
    <%Response.write "" & Rs ("xnote") & "" & ""%>
    <%Response.write "" & Rs ("price") & "" & ""%>
    <%Response.write "" & Rs ("prezzo_concorrenza") & "" & ""%>
    <%set rs=cn.execute ("Select MIN(prezzo_concorrenza) as minimo from Dati2 WHERE code LIKE '%" & Cerca & "%' ")%><%response.write ""&rs("minimo")%>
    <%set rs=cn.execute ("Select AVG(prezzo_concorrenza) as media from Dati2 WHERE code LIKE '%" & Cerca & "%' ")%><%response.write ""&rs ("media")%>
    <%set rs=cn.execute ("Select MAX(prezzo_concorrenza) as massimo from Dati2 WHERE code LIKE '%" & Cerca & "%' ")%><p align="center">%response.write ""&rs ("massimo")%></font></p>
    Come sarebbe : ti funzionava tutto ???
    Ora sono confuso...

+ Rispondi al Thread
Pagina 2 di 5 primaprima 1234 ... ultimoultimo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi