Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Select SQL checkbox

  1. #1

    Select SQL checkbox

    Salve a tutti,
    ho un piccolo problema con un motore di ricerca per annunci auto.
    funziona tutto perfettamente ma non riesco a fare in modo che quando si scelga una opzione (Abs, servosterzo, ect) tramite checkbox (che corrispnde nel db a 'id') ottenga gli annunci con la condizione che tutti i checkbox selezioanti siano veri, ottengo soltanto risultati in cui uno almeno uno dei checkbox selezionati sia vero.
    posto il codice:

    Set Rs_Annunci_cmd2 = Server.CreateObject ("ADODB.Command")
    Rs_Annunci_cmd2.ActiveConnection = MM_Portal_STRING
    Rs_Annunci_cmd2.CommandText = "SELECT * FROM q_opzioni, annunci " & Clausola & sqlmodello & CongModello & sqlmarca & CongProv & sqlprovincia & CongCond & sqlcondizioni & CongPrezzo & sqlprezzomin & CongKm & sqlkmmin & CongAnno & sqlAnnoMin & CongCarbu & sqlcarburante & CongTipo & sqltipo & CongCabs & sqlCabs & " AND Annunci.Approvato = 1 AND q_opzioni.annunci_idAnnuncio = annunci.idannuncio AND (Id = '" & request.querystring("Id") & "' OR Id = '" & request.querystring("Id2") & "') GROUP BY annunci.idannuncio"
    Rs_Annunci_cmd2.Prepared = true
    Rs_Annunci_cmd2.Parameters.Append Rs_Annunci_cmd2.CreateParameter("param1", 5, 1, -1, Rs_Annunci__VarMarca) ' adVarChar
    Rs_Annunci_cmd2.Parameters.Append Rs_Annunci_cmd2.CreateParameter("param2", 5, 1, -1, Rs_Annunci__VarModello) ' adVarChar
    Rs_Annunci_cmd2.Parameters.Append Rs_Annunci_cmd2.CreateParameter("param3", 200, 1, 255, Rs_Annunci__VarProvincia) ' adVarChar

    Set Rs_Annunci = Rs_Annunci_cmd2.Execute

    Rs_Annunci_numRows = 0

    end if
    %>

    Grazie tante a chi vorrà darmi una mano

  2. #2
    a occhio direi che hai usato degli OR mentre invece dovresti usare degli AND. per meglio capire fa' così

    sostituisci questa parte di codice

    Rs_Annunci_cmd2.CommandText = "SELECT * FROM q_opzioni, annunci " & Clausola & sqlmodello & CongModello & sqlmarca & CongProv & sqlprovincia & CongCond & sqlcondizioni & CongPrezzo & sqlprezzomin & CongKm & sqlkmmin & CongAnno & sqlAnnoMin & CongCarbu & sqlcarburante & CongTipo & sqltipo & CongCabs & sqlCabs & " AND Annunci.Approvato = 1 AND q_opzioni.annunci_idAnnuncio = annunci.idannuncio AND (Id = '" & request.querystring("Id") & "' OR Id = '" & request.querystring("Id2") & "') GROUP BY annunci.idannuncio"

    con

    Dim myCmd
    myCmd= "SELECT * FROM q_opzioni, annunci " & Clausola & sqlmodello & CongModello & sqlmarca & CongProv & sqlprovincia & CongCond & sqlcondizioni & CongPrezzo & sqlprezzomin & CongKm & sqlkmmin & CongAnno & sqlAnnoMin & CongCarbu & sqlcarburante & CongTipo & sqltipo & CongCabs & sqlCabs & " AND Annunci.Approvato = 1 AND q_opzioni.annunci_idAnnuncio = annunci.idannuncio AND (Id = '" & request.querystring("Id") & "' OR Id = '" & request.querystring("Id2") & "') GROUP BY annunci.idannuncio"
    Response.Write "maGGico cmd...: " & myCmd & "
    "
    Rs_Annunci_cmd2.CommandText = myCmd

    e poi posta il risultato

  3. #3
    Ciao Grazie per la risposta,

    Ti posto il risultato ...
    maGGico cmd...: SELECT * FROM q_opzioni, annunci WHERE modello = '1' AND marca = '1' AND Annunci.Approvato = 1 AND q_opzioni.annunci_idAnnuncio = annunci.idannuncio AND (Id = '4' OR Id = '2' OR Id = '') GROUP BY annunci.idannuncio

    Adesso l'annuncio viene trovato ma anche nella condizione in cui Id = 2 non è vera.
    Praticamente mi prende tutti gli annunci con la condizione che una sola opzione scelta sia vera e non tutte quelle selezionate.

  4. #4
    non conoscendo la struttura delle tabelle è difficile dire se la query è ok. hai provato a eseguirla direttamente dentro Access?

  5. #5
    Il db è in MySQL

    esiste una tabella annunci con relativo idannuncio es. 46
    e una tabella opzioni con Id_opzione - Nome_Opzione - idannuncio_Opzione
    praticamente annuncio con idannuncio 46 ha l'opzione 3 e 4 e non la n. 2
    Con questa espressione AND (Id = '4' OR Id = '2' OR Id = '6') basta che una delle tre condizioni sia vera per trovare l'annuncio. Invece a me serve che tutte le condizioni selezionate siano vere.

    Se puoi aiutarmi ... grazie

  6. #6
    Originariamente inviato da Albatros40
    Con questa espressione AND (Id = '4' OR Id = '2' OR Id = '6') basta che una delle tre condizioni sia vera per trovare l'annuncio. Invece a me serve che tutte le condizioni selezionate siano vere.
    ma te l'ho già detto! fa' in modo che la condizione diventi

    AND (Id = '4' AND Id = '2' AND Id = '6')

    ma non ho capito cosa sia ID (che NON può essere *contemporaneamente* uguale a tre valori diversi)

  7. #7
    si ... grazie ... ci sono x un pelo ....

    quindi all'interno della parentesi:

    AND (Id = '4' AND Id = '2' AND Id = '6')

    Dovrei riportarmi solo i valori delle checkbox selezionate e come faccio?

  8. #8
    Originariamente inviato da Albatros40
    Dovrei riportarmi solo i valori delle checkbox selezionate e come faccio?

    ???? come fai adesso! solo che devi mettere AND invece di OR!

  9. #9
    Allora ... l'id è l'id dell'opzione salvato in una tabella di salvataggio che mi permette di avere id dell'annuncio, l'id dell'opzione e il nome dell'opzione.
    Poi attraverso una Join collego la tabella annunci con la tabella di salvataggio e ottengo questo risultato:

    idannuncio | idopzione | opzione | ect .....
    46 2 abs
    46 3 Airbag
    46 4 Servosterzo
    48 1 Fendinebbia

    quindi se metto in atto questa condizione:
    AND (IdOPZIONE = '2' AND IdOPZIONE = '3' AND IdOPZIONE = '4')

    non mi trova nulla anche se tutte le opzioni sono presenti

    e invece con questa:
    AND (IdOPZIONE = '2' OR IdOPZIONE = '3' OR IdOPZIONE = '1')
    Mi trova l'annuncio con idannuncio 46 anche se l'idopzione dell'annuncio 46 non è uguale a 1 e quindi mi trova un auto che non ha fendinebbia

    Scusa ... ma mi sono espresso come ho pututo e grazie per la pazienza

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.