Query group by

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Salve ho la necessità di estrarre dei dati da una tabella di toponimi, in particolare devo estrarre tutti quei toponimi che si somigliano
Es.: toponimo la valle, rivalle
localita valle, del valle, lavalle, rivalle
vorrei che la query mi estraesse tutti questi perchè all'interno del nome hanno la stringa comune valle.
Le colonne della tabella dove fare la ricerca sono localita e toponimo

Ho fatto una query group by, ma mi estrae soltanto quelli uguali, è possibile fare una la query di cui ho bisogno?
Allego query group by che ho utilizzato...

PHP:
$query = "SELECT id, localita, toponimo
FROM viario
where (localita, toponimo) IN (select localita, toponimo
from viario
group by localita, toponimo
having count(*) > 1)
order by localita, toponimo";
Grazie
Max61
 
Ciao Max,
io sono un newbie ma (se usi MySQL) potresti usare la funzione REGEXP di ricerca..
Se vuoi i campi con la stringa "valle" credo che la query sia qualcosa di simile..

$query = "SELECT myfield1, myfield2 FROM mytable WHERE ((myfield1 REGEXP 'valle') OR (myfield2 REGEXP 'valle'))";
 
Ciao Max,
io sono un newbie ma (se usi MySQL) potresti usare la funzione REGEXP di ricerca..
Se vuoi i campi con la stringa "valle" credo che la query sia qualcosa di simile..

$query = "SELECT myfield1, myfield2 FROM mytable WHERE ((myfield1 REGEXP 'valle') OR (myfield2 REGEXP 'valle'))";


Ciao e grazie per la risposta, la query così com'è funziona, ma forse mi sono spiegato male, io vorrei estrarre tutte le stringhe simili che sono presenti in ambedue i campi, la stringa valle era solo un esempio.
Ciao
Max61
 
ciao Max,
io ho pochissime conoscenze ma, mi sembra, che non esista una query già pronta per fare quello che desideri tu
ciò che vuoi fare, più che una query, è un pesante lavoro

estendiamo un poco la parola valle,
valle, del valle, lavalle, rivalle, vallese, vallecaudina, lavalletta
(non ho inventato, esistono come le ho scritte)

in particolare dovresti definire una tabella con un campo,
che contenga in modo univoco tutte le parole che hai estratto singolarmente dai due campi
(ed è già un bell'impegno)

poi dovresti gestirti una seconda tabella, simile alla precedente dove memorizzi le parole "ridotte" di lunghezza e tutte le combinazioni

fatto ciò, puoi scorrere la tabella e, parola per parola, eseguire le, suppongo, migliaia di query
come quella già postata o con la clausola LIKE per trovare le corrispondenze

ovvero,

lavalletta
lavallett
lavallet
lavalle
lavall
....
avalletta
avallett
avallet
......
valletta
vallett
vallet
...

pensa a quante query ti produce una sola parola

ma forse non ho capito niente
ciao
Marino
 
Ultima modifica:
Eh si hai capito benissimo...e penso che sia un lavoro improponibile!!!
Grazie
Max61
 

Discussioni simili