Ricerca in sql

di il
14 risposte

Ricerca in sql

Ciao a tutti , avrei la necessità di un piccolo aiuto, devo fare una ricerca di dati nel mio database. Utilizzano la solita stringa:
select miatabella.* from miatabella where miatabella.clienti "rossi"

con questa stringa mi restituisce il record rossi e quindi 1 solo record nessun record precedente e nessun record successivo

Quale stringa devo inserire invece sempre per trovare rossi ma avere la possibilità di selezionare i record precedenti o successivi

spero di essere stato chiaro
grazie a chiunque per l' aiuto

14 Risposte

  • Re: Ricerca in sql

    Che intendi con precedente e successivo? Secondo quale ordine? Non esiste un precedente e un successivo...
  • Re: Ricerca in sql

    Intendo dire la possibilità di andare avanti con il comando recordset.movenext da rossi in poi .
    mentre adesso con la stringa select se clicco movenext mi dice che non ci sono altri record, perchè ne ha trovato 1 solo
  • Re: Ricerca in sql

    C'e' un errore di fondo:

    NON ESISTE il concetto di ""record precedente/successivo"" in un database.

    Ti sembrera' strano, ma il problema e' che il database ORDINA I RECORD COME PIACE A LUI.
    Qualche volta coincide anche con quello che pensi tu, ma e' piu' che altro ""un colpo di fortuna"".

    Il concetto di "record precedente/successivo"" lo devi intendere in questo modo:

    1) estrai una LISTA di record ORDINATA secondo un TUO MODO (NON quello scelto dal database, che oggi e cosi' ma domani chissa')
    2) mostri all'utente l'intera lista di record, oppure un record e gli permetti di spostarsi in avanti ed indietro rispetto alla TUA LISTA
    3) nessuno ti impedisce di estrarre dal database l'INTERA TABELLA

    Il ""recordset" e' ESATTAMENTE quello che intendo per TUA lista!
  • Re: Ricerca in sql

    lucateba ha scritto:


    Intendo dire la possibilità di andare avanti con il comando recordset.movenext da rossi in poi .
    mentre adesso con la stringa select se clicco movenext mi dice che non ci sono altri record, perchè ne ha trovato 1 solo
    Il linguaggio SQL non è progettato per questo scopo.

    Quello che vuoi fare tu nella pratica è navigare all'interno di un result set, ovvero spostarti avanti e indietro all'interno di un insieme di dati che devono essere scaricati e immagazzinati all'interno di una cache.

    Lo statement SQL ti serve per recuperare TUTTI i record fra i quali vuoi navigare, una volta memorizzati in una tabella di appoggio in memoria e visualizzati - ad esempio - all'interno di una griglia. Non esiste qualcosa che ti selezioni un record ed eventuali "precedenti" o "successivi", poiché questi dipendono da quali dati vuoi prendere in considerazione, come li ordini, ecc.

    Se vuoi "andare da Rossi in poi", devi scaricare tutti i record in una cache locale e andare a posizionarti sul record del sig. Rossi, dal quale potrai muoverti al precedente o al successivo di quel record che è circondato da tutti gli altri record scaricati.

    Per farlo ovviamente devi usare un linguaggio di programmazione (es. C#) e utilizzare gli strumenti che il framework (es. .NET) ti mette a disposizione (es. DataSet).

    Ciao!
  • Re: Ricerca in sql

    Ok è più complicato di quanto credevo, comunque grazie per la dritta
  • Re: Ricerca in sql

    lucateba ha scritto:


    Ok è più complicato di quanto credevo, comunque grazie per la dritta
    In realtà, mi pare semplicissimo e anche abbastanza intuitivo, ma non sono chiari i motivi della tua richiesta, qual è l'esigenza da risolvere e quale strumento stai utilizzando per eseguire la query e/o ricercare dati all'interno dei risultati (poiché alcuni tool supportano tranquillamente tutto quanto è stato detto di fare, con pochissimo anzi zero sforzi).
  • Re: Ricerca in sql

    In realtà ho trovato un metodo piuttosto semplice , ha creato una query con il nome per ordine alfabetico e con il segno < , mi carica tutti i record da rossi in poi, non posso tornare indietro ma posso andare avanti uno a uno:-)
    diciamo che è un piccolo compromesso
    grazie comunque per l' interesse
  • Re: Ricerca in sql

    Non è un metodo. Non è un compromesso.

    È un'altra cosa.

    Se tu cerchi rossi avrai rossi e basta.
    Se prendi tutti i nominativi in ordine alfabetico avrai tutti i nominativi in ordine.
  • Re: Ricerca in sql

    lucateba ha scritto:


    In realtà ho trovato un metodo piuttosto semplice , ha creato una query con il nome per ordine alfabetico e con il segno < , mi carica tutti i record da rossi in poi, non posso tornare indietro ma posso andare avanti uno a uno:-)
    Sarà, ma continuo a non capire né a che serve, né quale sia il vantaggio (a meno di non aver tempo da perdere o far fatica inutilmente), né come venga applicato un simile criterio, né qual è il tool utilizzato.

    lucateba ha scritto:


    diciamo che è un piccolo compromesso
    grazie comunque per l' interesse
    Diciamo che non si sa cos'è, ma di sicuro non è il modo di risolvere un problema che tra l'altro, a mio avviso, non lo è nemmeno.
  • Re: Ricerca in sql

    Grazie per le risposte , premetto che sono autodidatta e non ho certamente la vs. esperienza , mi arrangio un po' come posso , detto questo volevo solo spiegare del perchè questa richiesta.
    Ho un database interno dei nostri cliente con circa 3000 nominativi, dato che dei 3000, diversi non sono piu' nostri cliente , volevamo richiamarli uno a uno per ristabilire un contatto . Partendo dal primo (in ordine alfabetico ) , andiamo avanti con i contatti con il comado next. Se alla fine della giornata ne vengono chiamati 20 , il giorno dopo devo poter ripartire dal ventesimo in poi, ecco il perchè di questa ricerca, l' idea era che dall' ipoetico ventesimo , selezionarlo e da lì poter andare avanti ma anche tornare indietro, spero di essere stato piu' chiaro possibile
    buona giornata a tutti
  • Re: Ricerca in sql

    Ma usare Excel? Crei la connessione alla tabella con la procedura guidata e poi filtri, ricerchi, formatti, aggiungi, ecc...
  • Re: Ricerca in sql

    Si anche ma volevo lavorare direttamente nel database creando una maschera a doc, con altre info contatti , ma questa è un altra cosa
  • Re: Ricerca in sql

    lucateba ha scritto:


    Partendo dal primo (in ordine alfabetico ) , andiamo avanti con i contatti con il comado next. Se alla fine della giornata ne vengono chiamati 20 , il giorno dopo devo poter ripartire dal ventesimo in poi, ecco il perchè di questa ricerca
    In ogni caso, devi ricordarti esattamente qual è l'ultimo cliente che hai contattato: che differenza fa recuperare tutti i clienti e posizionarsi su quello, piuttosto che modificare di volta in volta una ricerca sul cliente a cui sei arrivato?

    Inoltre, si tratta di una mossa pericolosa: devi usare un criterio basato su più campi, perché se usi solo il cognome e vi sono delle omonimie, rischi di contattare lo stesso.

    lucateba ha scritto:


    l' idea era che dall' ipoetico ventesimo , selezionarlo e da lì poter andare avanti ma anche tornare indietro, spero di essere stato piu' chiaro possibile
    In sintesi, la soluzione è:

    1)
    recupera tutte le anagrafiche che hai in tabella;

    2)
    una volta che hai l'intero set di dati, puoi navigarli come vuoi, andando avanti e indietro, dal primo all'ultimo;

    3)
    trova un modo per contrassegnare dove sei arrivato, o aggiungi un campo per memorizzare questa informazione, così non ti sbagli.

    E se la base dati non può essere cambiata, allora esporta quei dati in Excel come ti è stato suggerito, e usa quel formato per prendere tutte le annotazioni che vuoi sulle anagrafiche e spostarti in qualsiasi momento su quella favorita.

    Ribadisco: con i requisiti espressi di voler navigare in lungo e in largo i dati di una tabella, l'unica cosa che ha zero senso è costruirsi una query con cui recuperare un singolo record e lambiccarsi su come modificarla per andare a quello precedente o successivo, che non esistono (lo sai solo recuperandone più di uno), per tutti i motivi che ti hanno già spiegato una decina di utenti almeno.
  • Re: Ricerca in sql

    lucateba ha scritto:


    a doc
    Versione informatica di "ad hoc" ...

Devi accedere o registrarti per scrivere nel forum
14 risposte