Gambas-it

Gambas3 => Programmazione => Topic aperto da: Ferdinando88 - 05 Maggio 2012, 08:37:03

Titolo: sql ricerca con più filtri
Inserito da: Ferdinando88 - 05 Maggio 2012, 08:37:03
Ciao a tutti, vi espongo il mio problema.
Ho creato un database per un agenzia immobiliare e volevo implementare la funzione di ricerca, per farlo ho utilizzato questa funzione

 sql = "SELECT * FROM immobili WHERE tipologia LIKE '%" & textbox9.text & "%'"

però in questa maniera ovviamente mi da i risultati relativi solo ad un filtro, se io volessi mettergli più filtri ? qualcuno può aiutarmi ?
Titolo: Re: sql ricerca con più filtri
Inserito da: milio - 05 Maggio 2012, 09:17:27
sql = "SELECT * FROM immobili WHERE tipologia LIKE '%" & textbox9.text & "%' And costo > 1000"

Basta aggiungere un And ogni volta che vuoi aggiungere un filtro...

Non per farmi pubblicità,  :-[, potresti provare il mio progetto QueryCreator... ti facilita un po' la vita nelle costruzioni di query
Titolo: Re: sql ricerca con più filtri
Inserito da: Ferdinando88 - 05 Maggio 2012, 09:37:20
grazie, della risposta...dove lo trovo il tuo progetto ? potrebbe interessarmi !!!
Cmq il problema è che con la soluzione che mi hai dato mi cerca più filtri ma solo nella colonna "tipologia" io invece vorrei che ogni filtro cercasse in una colonna diversa e alla fine ottenessi un unico risultato.
Per esempio, mettiamo che un utente desideri cercare una Appartamento di 100mq al prezzo di 200.000 euro.

Io vorrei usare 2 filtri

1) 100 mq
2) 200.000 euro

ed ottenere i risultati che soddisfino entrambi i filtri e non solo uno o l'altro....è possibile ?
Titolo: Re: sql ricerca con più filtri
Inserito da: Ferdinando88 - 05 Maggio 2012, 09:41:11
No scherzavo...funziona :-) grazie mille :-)
Titolo: Re: sql ricerca con più filtri
Inserito da: milio - 05 Maggio 2012, 09:41:47
premesso che io non so che campi ci sono nella tua tabella (infatti hai messo un * nella select) ma se leggi il post precedente vredrai che c'e' un filtro su tipologia che accetta un dato esterno e un filtro sul (immaginario) campo costo che filtra i costi superiori a 1000....

il progetto QueryCreator lo trovi qui:

http://www.gambas-it.org/smf/index.php?topic=1912.msg23384#msg23384
Titolo: Re: sql ricerca con più filtri
Inserito da: milio - 05 Maggio 2012, 09:42:16
No scherzavo...funziona :-) grazie mille :-)

Ecco appunto  :)
Titolo: Re: sql ricerca con più filtri
Inserito da: Ferdinando88 - 05 Maggio 2012, 11:14:43
Giusto un altra cosa...come faccio a mettere un nome alle colonne ? nella GW i dati mi escono senza il titolo della colonna ed è troppo caotico così
Titolo: Re: sql ricerca con più filtri
Inserito da: milio - 05 Maggio 2012, 22:22:00
Select Campo1 As Etichetta, Campo2 As Etichetta2, ... Form Tabella Where ...
Titolo: Re: sql ricerca con più filtri
Inserito da: allegfede - 05 Agosto 2013, 12:22:38
rispolvero questo tread (utilissimo) per chiedere un consiglio su come effettuare una ricerca un po' piu' articolata.

La richiesta e' quella di fare una ricerca per TAG sul database. Ovvero cercare sul DB quei contenuti che hanno tag corrispondenti a: "tag1" or "tag2" and "tag3" not ("tag4" or "Tag5")

Esite una funzione precostituita od un parser gia' realizzato che interpreta la sintassi dei tag (o similare) e genera una ricerca condizionata SQL ?

Per ora ho implementato bene con il singolo tag .... ma mettersi a far eun parser per gli AND OR NOT con la nidificazione delle parentesi) proprio non mi va' :D

Codice: [Seleziona]
 If ComboBox_Program.Text <> "" Then
    comando = "SELECT * from Programs_episodes WHERE program = '" & ComboBox_Program.Text & "'"
    Else
      comando = "SELECT * from Programs_episodes"
  Endif
 
  If ComboBox_Season.Text <> "" Then
    comando = comando & "AND season = '" & ComboBox_Season.Text & "'"
  Endif
 
  If TextArea_TAG.Text <> "" Then
    If InStr(comando, "WHERE") > 0 Then
      comando = comando & " AND Tags = '" & TextArea_TAG.Text & "'"
      Else
        'comando = comando & " WHERE Tags = '" & TextArea_TAG.Text & "'"
        comando = comando & " WHERE Tags like '%" & TextArea_TAG.Text & "%'"
    Endif
  Endif

Titolo: Re: sql ricerca con più filtri
Inserito da: md9327 - 06 Agosto 2013, 19:33:35
I dbms hanno svariate funzioni per le ricerche.
Le sintassi e le potenzialità dipendono dal tipo di database (MySQL o PostgreSQL o altro), per cui la cosa diventa complicata se gestita da programma.
Con questo intendo dire che, conoscendo tutte le funzioni include nel db, comporta la scrittura di un driver specifico, e per ogni tipo di database.
Il driver ODBC, per esempio, implementa un set molto limitato di queste funzioni, perchè ogni db ha le sue, alcune coincidono con funzioni presenti in altri motori, alcuni non le hanno proprio.
Se la tua applicazione è completamente mirata ad un tipo di db specifico, puoi richiamare e utilizzare direttamente le sue funzioni interne. Però, se poi decidi di rendere l'applicazione un pò più dinamica, allora la cosa può creare problemi.

Se le ricerche vengono fatte tramite codice, con i semplici comandi sql standard, allora non avrai problemi, tranne che per le performaces. Alcuni db usando funzioni estremamente specializzate, e che sfruttano appieno la potenza del motore del db, che non potrai mai raggiungere da codice esterno.
Titolo: Re: sql ricerca con più filtri
Inserito da: allegfede - 08 Agosto 2013, 13:16:25
si capisco ...... penso che usero' un OR forzato ... quindi piu' tag mettono piu' "allargano" il pool dei risultati ..... poi vedremo .....

per le prestazioni ..... me ne occupero' quando avro' uno scheletro di applicazione funzionante ;-)