Pagina 1 di 11 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 104
  1. #1
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    371

    SQL query ricerca 6 valori su 6 campi

    Buongiorno a tutti.

    Avrei bisogno del vostro aiuto.

    Ho DB con 6 campi in cui vengono memorizzati in modo casuale dei numeri, avrei bisogno di fare una query in base ad altri 6 numeri casuali che immetto in un form di ricerca.

    Devo ricecare i 6 numeri del form in qualsiasi dei 6 campi della mia tabella e visualizzare solo quelli che hanno minimo 2 corrispondenze e i successivi 3 record.

    Esempio: devo vedere dove compaiono almeno tre dei seguenti numeri 1 2 3 4 5 6 in qualsiasi posizione della mia tabella, prendere solo le righe dove compaiono minimo due dei numeri che ho messo come chiave di ricerca e visualizzare anche le successive 3 righe in ordine cronologico.

    Spero di essermi spiegato.

    E' fattibile?

    Grazie.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  2. #2
    Usa una query come questa per identificare la chiave del primo record:

    codice:
    SELECT id, IF (campo1 IN(1, 2, 3, 4, 5, 6), 1, 0) + IF (campo2 IN(1, 2, 3, 4, 5, 6), 1, 0) + IF (campo3 IN(1, 2, 3, 4, 5, 6), 1, 0)  etc. etc. AS total from users HAVING total >= 2
    Poi fai una query ordinata per la chiave e dove la chiave è >= alla chiave trovata, limitando per 3.

  3. #3
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    371
    Grazie Filippo.

    Non ne esco comunque, posto la query che hai suggerito.

    Codice PHP:
    $query "SELECT id, IF (primo  IN(1, 2, 3, 4, 5, 6), 1, 0) + IF (secondo  IN(1, 2, 3, 4, 5, 6), 1, 0) + IF (terzo  IN(1, 2, 3, 4, 5, 6), 1, 0) + IF (quarto   IN(1, 2, 3, 4, 5, 6), 1, 0) + IF (quinto  IN(1, 2, 3, 4, 5, 6), 1, 0) + IF (sesto   IN(1, 2, 3, 4, 5, 6), 1, 0) AS total FROM tabella HAVING total;"
    Poi non so come usare la chiave total nella seconda query, sto leggendo in rete ma son fermo li.
    Ultima modifica di Max Della Pena; 22-03-2024 a 01:05
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  4. #4
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    371
    Scusa ho dato una spiegazione errata

    Quote Originariamente inviata da Max Della Pena Visualizza il messaggio
    Buongiorno a tutti.
    Esempio: devo vedere dove compaiono almeno tre dei seguenti numeri 1 2 3 4 5 6 in qualsiasi posizione della mia tabella, prendere solo le righe dove compaiono minimo due dei numeri che ho messo come chiave di ricerca e visualizzare anche le successive 3 righe in ordine cronologico.
    La chiave di ricerca non è fissa 1 2 3 4 5 6, i numeri sono variabili, possono essere 54 25 88 1 57 49 o infinite altre combinazioni.

    Quindi dovrei sostituire 1 2 3 4 5 6 con quello che gli passo via form giusto?

    Sono ancora in alto mare per la query successiva.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  5. #5
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    371
    Niente da fare, vado a nanna.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  6. #6
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,365
    Ma se la tua query ti ricava diverse righe, quante volte vuoi i 3 record successivi ? Per uno ? Per tutti ?
    Seppoi, la query ti ricava tre record che si susseguono … ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  7. #7
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    371
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Ma se la tua query ti ricava diverse righe, quante volte vuoi i 3 record successivi ? Per uno ? Per tutti ?
    Seppoi, la query ti ricava tre record che si susseguono … ?
    Ciao Badaze, come stai?

    Allora, supponiamo che la ricerca sia per i seguenti numeri 10 20 30 40 50 60 e che la query ricavi 4 righe dove almeno 3 di questi numeri siano presenti, mi servirebbe ognuna delle righe estratte e i relativi tre record sucessivi.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  8. #8
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    371
    Questa è la query che ho fatto come suggerito da Filippo.

    Codice PHP:
    $query "SELECT id, IF (primo='$primo'  IN(primo, secondo, terzo, quarto, quinto, sesto), 1, 0) + IF (secondo='$secondo'  IN(primo, secondo, terzo, quarto, quinto, sesto), 1, 0) + IF (terzo='$terzo'  IN(primo, secondo, terzo, quarto, quinto, sesto), 1, 0) + IF (quarto='$quarto'   IN(primo, secondo, terzo, quarto, quinto, sesto), 1, 0) + IF (quinto='$quinto'  IN(primo, secondo, terzo, quarto, quinto, sesto), 1, 0) + IF (sesto='$sesto'   IN(primo, secondo, terzo, quarto, quinto, sesto), 1, 0) AS total FROM tabella HAVING total "
    I campi della tabella si chiamano primo secondo terzo quarto quinto e sesto, se ho capito bene verifica che i 6 valori che gli passo siano o meno presenti presenti in tutti i campi rendendo 0 o 1 sommandoli nel valore total.


    Con la seconda query sono in alto mare.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,365
    Ciao Max
    Mica male e tu ? Forse andro’ in Friuli questa estate.

    Procediamo passo per passo.
    Ecco cosa intendeva Filippo.

    codice:
    select id, 
    if(primo in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(secondo in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(terzo in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(quarto in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(quinto in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(sesto in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) as totale
    from tabella
    having totale >= 2
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  10. #10
    Utente di HTML.it L'avatar di Max Della Pena
    Registrato dal
    Jan 2014
    residenza
    Udine
    Messaggi
    371
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Ciao Max
    Mica male e tu ? Forse andro’ in Friuli questa estate.

    Procediamo passo per passo.
    Ecco cosa intendeva Filippo.

    codice:
    select id, 
    if(primo in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(secondo in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(terzo in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(quarto in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(quinto in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) +
    if(sesto in ($num1, $num2, $num3, $num4, $num5, $num6), 1, 0) as totale
    from tabella
    having totale >= 2
    Grazie, era una delle prime prove che ho fatto ma forse sbagliavo sintassi nei vari $num1 $num2 ecc.

    Adesso mi vi metto.
    Mi chiedo, caro Alberto, se questo antifascismo rabbioso che viene sfogato nelle piazze oggi a fascismo finito, non sia in fondo un’arma di distrazione che la classe dominante usa su studenti e lavoratori per vincolare il dissenso.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.