Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    [Mysql] Risultati ripetuti

    La premessa è che non so se è un problema risolvibile direttamente tramite query o se devo lavorare sull'array di risultati tramite php. Nel caso sia questa seconda ipotesi, chiedo scusa al moderatore.

    Il problema è questo:
    Sto creando un motore di ricerca che pesca dati su tabelle relazionate tra loro.
    Dal momento che le ricerche devono poter essere fatte in maniera libera da una tabella all'altra semplicemente con delle select html, mi ritrovo a dover impostare una query di ricerca tramite input, ma a non aver ben chiara la forma giusta.

    Ho provato questa:

    codice:
    SELECT  * from utenti 
    LEFT join quota on utenti.id = quota.utenti_id
    WHERE utenti.nome LIKE 'b%'  and  quota.valore > 200
    La cosa tecnicamente stampa i risultati giusti, i problemi sono due:

    1) le quote sono associate agli utenti in forma "molti ad uno", quindi mi ritrovo un numero di righe pari alle quote con all'interno ripetuti "n" volte gli stessi dati anagrafici.

    2) a me interessa in realtà che la ricerca si focalizzi sugli utenti come conteggio (quindi se gli utenti sono 2 e le quote sono 10, a me interessa che le linee possibilmente fossero 2) e solo dopo riporti gli eventuali risultati corrispondenti al criterio scelto per la tabella quota.

    3) Il mio primo tentativo è stato DISTINCT, ma ovviamente le righe non sono uguali tra loro.

    Consigli?

    Grazie mille!

    P.S aggiungo un elemento, raramente magari, ma è possibile che in questo gioco le tabelle di ricerca diventino 3 o 4, ma forse per il momento è bene risolvere lo step base.
    Ultima modifica di Korenaar; 17-07-2014 a 18:51

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    17
    Ciao ! Scusa ma non ho capito benissimo quello che vuoi fare però se non vuoi i dato uguali puoi nella query mettere un group by utente e quota altrimenti se vuoi utilizzare php puoi eliminare i dati duplicati utilizzando la funzione array_unique.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Ciao Veciaz,
    grazie del supporto intanto.

    Ho provato GROUP BY, comando che in effetti la mia mente aveva completamente rimosso dal lotto degli esistenti.

    Per spiegarmi meglio, il motore è un motore di ricerca generale su diverse tabelle del database, ergo ho necessità di risalire all'utente partendo da una qualsiasi delle tabelle relazionali, e con la possibilità di incrociare nella ricerca dati diversi da tabelle diverse per ottenere un risultato ben distinto.

    (ES. tabella utenti, tabella quote, tabella servizi, tabella pagamenti. Cerca tutti gli utenti residenti a Roma, e/o che abbiano ALMENO una quota annuale maggiore di 200, e/o che abbiano i servizi attivati quest'anno e/o che abbiano regolarmente pagato la quota annuale. Interrogo 4 tabelle in questo caso).

    GROUP BY di fatto esegue il lavoro che avrei voluto perchè mi consente di discernere i singoli utenti che rispondono ai criteri impostati, ergo grazie mille per il suggerimento.

    Ora mi resta il problema di come utilizzare comunque tutti i dati disponibili di questi utenti. Come ti dicevo, senza GROUP BY mi ritrovavo risultati in questo modo per via del rapporto "molti a uno" delle tabelle relazionate:

    codice:
    id       nome      cognome     anno      quota
     1       pippo      pluto          2000      200
     1       pippo      pluto          2006      200
    etc.etc
    Di fatto i dati degli utenti mi servono praticamente tutti in un secondo momento, anche quelli non congrui rispetto alla ricerca (ES: quota > 200, un utente magari ne ha una, ma possiede altre 5 quote da 100 precedenti o successive).

    Comincio a pensare che forse il GROUP BY è utile a fini "statistici" e di listato, ma che dovrò vedermela via php con i comandi per gli array.

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.