Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [MySQL] definire ordine di ricerca

    E' possibile stabilire un ordine nella query definendo le voci una per una?
    Mi spiego meglio:

    Voglio che i risultati di una query compaiano, in base al campo 'citta' nell'ordine:

    Barletta
    Margherita
    Trani
    Andria
    Bisceglie
    Molfetta
    Bari
    Brindisi
    Lecce

    A che mi serve una cosa così sconclusionata?

    Voglio ordinare i risultati in base alla distanza dei paesi da una citta scelta.
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    ..allora crei una colonna "distanza" e li ordini in base a quella...

    P.S.: bella Molfetta!

    [.:: JaguarXF ::.]
    __________________

  3. #3
    ..allora crei una colonna "distanza" e li ordini in base a quella...
    daaaiiiiii!!!! credi che non ci avrei pensato! mi fai così bacchettone!

    e se parto da un'altra città?
    Ho un database di 8000 comuni. Dovrei stabilire per ciascuno di loro l'ordine di distanza. Faccio prima ad andarci a piedi che a finire riempirlo!

    Potrei upgradare il campo "distanza" nella tabella citta ad ogni query, ma non mi sembra una soluzione ottimale.

    Comunque mi hai dato uno spunto.
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

  4. #4
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    No, per ognuno dovresti semplicemente definire latitudine e longitudine, poi per calcolare la distanza (in linea d'aria!) tra quel dato comune e qualsiasi altro equivale ad usare il teorema di Pitagora...


    [.:: JaguarXF ::.]
    __________________

  5. #5
    eh, lo so. D'altronde, è una discussione che ho iniziato io (lo dico con un po di orgoglio )
    qundi c'é tutto.
    Manca solo un criterio di ricerca che selezioni prima i paesi piu vicini.
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

  6. #6
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Originariamente inviato da gemello.it
    eh, lo so. D'altronde, è una discussione che ho iniziato io (lo dico con un po di orgoglio )
    qundi c'é tutto.
    ekkekiediafareallora?

    Manca solo un criterio di ricerca che selezioni prima i paesi piu vicini.
    Ovvero??

    [.:: JaguarXF ::.]
    __________________

  7. #7
    Effettivamente quando parlo non mi capisco nemmeno io..

    Allora. Essendo un database mooooolto grosso, voglio trovare un sistema il più leggero possibile per recuperare i dati.

    Faccio così:
    Prima mi passo la tabella 'citta', e con l'algoritmo (della discussione di cui ti parlavo) seleziono le città che sono incluse nei tot chilometri.

    Poi interrogo la tabella 'articoli' e dico: recupera tutti gli articoli nella citta x OR nella citta y OR nella citta z
    (immagino sia piu veloce che calcolare l'algoritmo per ogni articolo....)
    E fin qui tutto a posto.

    Se voglio l'elenco degli articoli in base alla distanza?
    Come faccio??
    Potrei sfruttare la prima interrogazione alla tabella 'citta' e recuperare la distanza.

    E poi come la sfrutto sulla seconda interrogazione?

    Comunque l'interrogativo é sempre quello:
    Qual'é il modo corretto di fare questo?

    codice:
    SELECT * FROM articoli WHERE citta='Barletta' OR citta='Bari' OR citta='Verona' OR citta='Andria' ORDER IN THIS MOD 'Barletta',
    'Andria', 'Bari', 'Verona'
    ci sarà un modo per far ciò.

    Altrimenti sarei portato a pensare che ASP é effettivamente meglio di PHP

    P.S. Anche Verona é molto molto bella. Ci sono stato nell'88.
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

  8. #8
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Beh... e un bel ciclo di SELECT non puoi farlo??

    Inserisci le città che hai trovato, nell'ordine, in un array e cicli in base a tale array creando un
    SELECT .. WHERE $citta = '".$array_nomi[$indice_array]."'"....

    Non è il metodo più semplice? -- ma immagino che ti serva ben altro, sicuramente poi dovrai fare altre 800 query sul risultato ottenuto... immagino

    Ci sono altri modi: se questo non ti va bene, magari li cerchiamo assieme -- ed assieme ad altri qui più esperti di me sull'SQL...

    [.:: JaguarXF ::.]
    __________________

  9. #9
    Beh, si.. ci avevo pensato a fare una select per ogni città.
    Solo che non saprei come dividerle per pagine.
    Mi spiego:
    Ora calcolo il numero di risultati, li divido in base a quanti risultati vuole l'utente per pagina (esempio 20), e creo i pulsantini con i numeretti. (pag1 pag2 pag3 pag4...)

    Con più di una query le cose si complicherebbero.
    Penso anche che la ricerca risulterebbe più lunga.

    Prima o poi risolveremo.
    Come é sempre successo.
    we! la hai presa a cuore! grazie!
    Se avessi voluto risolvere i problemi con la forza, sarei nato Jedi.

  10. #10
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Beh..

    fai qualcosa del tipo:

    Codice PHP:
    $query "";
    for (
    $indice_array......)
      {
      
    $query .= "(SELECT * FROM tabella WHERE citta = ".$array_nomi[$indice_array]."') UNION";
      }
    $query substr($query,0,strlen($query)-6); 
    Poi esegui la query come vuoi; io uso ADODB e faccio:

    Codice PHP:
    $result $db_conn->Execute($query) or die($conn->ErrorMsg()); 
    Il codice l'ho scritto qui, non l'ho eseguito, ci saranno delle caCate, ma l'importante è capire...

    Questa dovrebbe essere la soluzione x te...

    [.:: JaguarXF ::.]
    __________________

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.