• User Attivo

    E' semplicemente una select con 3 "where" 😄

    proprio in questi casi qui torna utile la struttura come quella che ho illustrato.
    Anche perchè adesso hai aggiunto anche la tipologia di contratto (locazione e vendita) e località.

    Non aver paura di usare più tabelle, quelle non si pagano, l'importante è che strutturi il DB nel modo corretto, poi vedrai che il codice verrà da se.


  • User Attivo

    @Icelord said:

    E' semplicemente una select con 3 "where" 😄

    proprio in questi casi qui torna utile la struttura come quella che ho illustrato.
    Anche perchè adesso hai aggiunto anche la tipologia di contratto (locazione e vendita) e località.

    Non aver paura di usare più tabelle, quelle non si pagano, l'importante è che strutturi il DB nel modo corretto, poi vedrai che il codice verrà da se.

    Cioè come 3 where, così?

    strsql = "SELECT * FROM [vendita] WHERE tipologia='" & scelta & "' WHERE categoria='" & sceltacategoria & "' ORDER BY ID DESC;"


  • User Attivo

    @sraone77 said:

    Cioè come 3 where, così?

    strsql = "SELECT * FROM [vendita] WHERE tipologia='" & scelta & "' WHERE categoria='" & sceltacategoria & "' ORDER BY ID DESC;"

    No. Devi creare un'altra tabella (tipologia) con i campi "id_tipologia(intero-contataore-chiave primaria)" e "tipologia(varchar)". Poi togli il campo testo "tipologia" dalla tab vendita e metti un campo intero "id_tipologia"
    Alla fine farai una inner join fra tab vendita e tab tipologia passando nella where il numerico id_tipologia.

    "select vendita.*,tab_cat.tipologia from vendita inner join tab_cat on tab_cat.id_tipologia=vendita.id_tipologia where tab_cat.id_tipologia="&scelta&""

    Dove la variabile "scelta" è l'id che corrisponde alla tipologia che ti interessa.

    Il problema è che forse non sai cosa è una join visto che hai concatenato 3 where di seguito 🙂
    Non lo dico per offesa...

    Apro una parentesi. Stai passando in pasto alle query dei dati non filtrati. Sicurezza zero. In questi casi possono cancellarti l'intero db in 2 secondi.
    Ma questo richiederebbe un thread dedicato.

    P.s. L'ho spiegato una cacca ma a quest'ora sto fuso. Magari domani rileggo cosa ho scritto 😄

    Pienamente d'accordo con Icelord


  • User Attivo

    Fusionman, mi sa che l'hai mandato in crisi 🙂

    cmq per concatenare 3 whre basta metterci un AND di mezzo.
    Come avrai notato non ti sto riscrivendo la query con queste istruzioni perchè è proprio la base dell'utilizzo del linguaggio SQL e se non stai di cosa si sta parlando meglio studiare un po' prima.

    Ti consiglio, visto che non hai esperienza in merito, di dare un'occhiata prima a delle guide, su HTML.it ne trovi diverse e ben fatte.
    E di guardare anche siti come aspitalia.it e devguru.com

    Prima di fare lavori del genere sarebbe meglio formarsi ed informarsi. Come dice Fusionman non c'è nulla sulla sicurezza in queste tue chiamate. Rischi di trovarti un sito completamente aperto o svuotato e non ci fai una bella figura.

    Formazione è la parola chiave 😉


  • User Attivo

    Premetto che non sono così ignorante da non saper scrivere una semplice riga di comando. Certo non sono un veterano dell'asp ma per quello che devo fare mi sono sufficienti le nozioni che ho.
    Ora il mio errore era quello di mettere dopo l'AND, dinuovo il comando WHERE. Quindi ho risolto in questo modo:

    strsql = "SELECT * FROM [vendita] WHERE tipologia='" & scelta & "' AND categoria='" & sceltacategoria & "' ORDER BY ID DESC;"

    grazie.


  • User Attivo

    Ma io non volevo offendere nessuno. L'ho detto per spronarti ad approfondire la questione e mettere in chiaro che non si possono spiegare certi argomenti se prima non se ne conoscono altri.
    Non è mica detto che si deve conoscere tutto? Magari sei un genio del C++ nel quale io sono completamente ignorante
    Se poi vuoi usare un metodo che funziona ma che non è il modo giusto allora prosegui per quella strada. Altrimenti vediamo di aiutarti.
    Ciao


  • User Attivo

    No figurati non mi sono offeso. Ora però non riesco a fare sta cosa:
    ho questa query

    scelta=request.form("scelta")
    sceltacategoria=request.form("sceltacategoria")
    sceltalocalita=request.form("sceltalocalita")

    strsql = "SELECT * FROM [vendita] WHERE tipologia='" & scelta & "' AND categoria='" & sceltacategoria & "' AND localita='" & sceltalocalita & "' ORDER BY ID DESC;"

    e tutto va bene, ma se mette nelle scelte, l'opzione "Vedi tutti" quale valore devo dare alla variabile affinchè mi escano tutti i dati di quella colonna?

    es.: apparamento --> vende --> Vedi tutti
    oppure

    vdi tutti --> vende --> Mare


  • User Attivo

    dovresti usare degli IF e non inserire nella query l'istruzione wher corrispondnde a quel dato.


  • User Attivo

    beh si...come dice Icelord dovresti creare una stringa sql dinamica facendo delle if sulle variabili

    es.

    strsql = "SELECT * FROM [vendita] WHERE id>0 "
    
    if scelta<>"" then
    strsql=strsql & " and tipologia='" & scelta & "' "
    end if
    
    if sceltacategoria<>"" then
    strsql=strsql & " and categoria='" & sceltacategoria & "' "
    end if
    
    if sceltalocalita<>"" then
    strsql=strsql & "AND localita='" & sceltalocalita & " "
    end if
    
    strsql = strsql & " ORDER BY ID DESC; "
    

    Per escludere un valore basta che passi alla query quest'ultimo vuoto.

    vabè alla fine te l'ho fatta...:D


  • User Attivo

    Grazie!