Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Query funzionante solo su phpmyadmin

    Ciao a tutti, ho un piccolo problema con una query, su phpmyadmin funziona, quando poi la implemento nel codice php invece non dà alcun risultato.
    la query è questa:

    Codice PHP:
    SELECT SUM(".$server."_x_world1.pop) AS d0SUM(".$server."_x_world2.pop) AS d1SUM(".$server."_x_world3.pop) AS d2SUM(".$server."_x_world4.pop) AS d3 
    FROM 
    ".$server."_x_world1".$server."_x_world2".$server."_x_world3".$server."_x_world4 
    WHERE 
    ".$server."_x_world1.idUser=".$arFilter['idUser']." 
    AND ".$server."_x_world1.id=".$server."_x_world2.id 
    AND ".$server."_x_world1.id=".$server."_x_world3.id 
    AND ".$server."_x_world1.id=".$server."_x_world4.id 
    GROUP BY 
    ".$server."_x_world1.idUser 
    In poche parole somma il campo "pop" da 4 tabelle con lo stesso "idUser"
    la query funzionante su phpmyadmin è questa
    codice:
    SELECT ts5it_x_world1.nameUser, SUM(ts5it_x_world1.pop) AS d0, SUM(ts5it_x_world2.pop) AS d1, SUM(ts5it_x_world3.pop) AS d2, SUM(ts5it_x_world4.pop) AS d3
    FROM ts5it_x_world1, ts5it_x_world2, ts5it_x_world3, ts5it_x_world4
    WHERE ts5it_x_world1.id=ts5it_x_world2.id
    AND ts5it_x_world1.id=ts5it_x_world3.id
    AND ts5it_x_world1.id=ts5it_x_world4.id
    GROUP BY ts5it_x_world1.nameUser
    che stampa tutti i risultati, se voglio filtrare un solo idUser:
    codice:
    SELECT ts5it_x_world1.nameUser, SUM(ts5it_x_world1.pop) AS d0, SUM(ts5it_x_world2.pop) AS d1, SUM(ts5it_x_world3.pop) AS d2, SUM(ts5it_x_world4.pop) AS d3
    FROM ts5it_x_world1, ts5it_x_world2, ts5it_x_world3, ts5it_x_world4
    WHERE ts5it_x_world.idUser=28
    AND ts5it_x_world1.id=ts5it_x_world2.id
    AND ts5it_x_world1.id=ts5it_x_world3.id
    AND ts5it_x_world1.id=ts5it_x_world4.id
    GROUP BY ts5it_x_world1.nameUser
    che mi restituisce esattamente quello che cerco.
    non capisco perchè non funziona nel codice php....

    Il risultato che voglio ottenere è la selezione di tutti i record nelle 4 tabelle la cui somma del campo "pop" sia compresa in un certo valore fornito dall'utente
    Esempio
    codice:
    idUser     tab1.pop    tab2.pop    tab3.pop   tab4.pop
    19              45        43         43      43
    25             103       95          90      85
    19              87        87          87      87
    se imposto un massimo di variazione di 10, in output devo avere solo l'idUser 19. Posso fare questo con una sola query?

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: Query funzionante solo su phpmyadmin

    Originariamente inviato da peppeocchi
    Ciao a tutti, ho un piccolo problema con una query, su phpmyadmin funziona, quando poi la implemento nel codice php invece non dà alcun risultato.
    la query è questa:

    Codice PHP:
    SELECT SUM(".$server."_x_world1.pop) AS d0SUM(".$server."_x_world2.pop) AS d1SUM(".$server."_x_world3.pop) AS d2SUM(".$server."_x_world4.pop) AS d3 
    FROM 
    ".$server."_x_world1".$server."_x_world2".$server."_x_world3".$server."_x_world4 
    WHERE 
    ".$server."_x_world1.idUser=".$arFilter['idUser']." 
    AND ".$server."_x_world1.id=".$server."_x_world2.id 
    AND ".$server."_x_world1.id=".$server."_x_world3.id 
    AND ".$server."_x_world1.id=".$server."_x_world4.id 
    GROUP BY 
    ".$server."_x_world1.idUser 
    In poche parole somma il campo "pop" da 4 tabelle con lo stesso "idUser"
    la query funzionante su phpmyadmin è questa
    codice:
    SELECT ts5it_x_world1.nameUser, SUM(ts5it_x_world1.pop) AS d0, SUM(ts5it_x_world2.pop) AS d1, SUM(ts5it_x_world3.pop) AS d2, SUM(ts5it_x_world4.pop) AS d3
    FROM ts5it_x_world1, ts5it_x_world2, ts5it_x_world3, ts5it_x_world4
    WHERE ts5it_x_world1.id=ts5it_x_world2.id
    AND ts5it_x_world1.id=ts5it_x_world3.id
    AND ts5it_x_world1.id=ts5it_x_world4.id
    GROUP BY ts5it_x_world1.nameUser
    che stampa tutti i risultati, se voglio filtrare un solo idUser:
    codice:
    SELECT ts5it_x_world1.nameUser, SUM(ts5it_x_world1.pop) AS d0, SUM(ts5it_x_world2.pop) AS d1, SUM(ts5it_x_world3.pop) AS d2, SUM(ts5it_x_world4.pop) AS d3
    FROM ts5it_x_world1, ts5it_x_world2, ts5it_x_world3, ts5it_x_world4
    WHERE ts5it_x_world.idUser=28
    AND ts5it_x_world1.id=ts5it_x_world2.id
    AND ts5it_x_world1.id=ts5it_x_world3.id
    AND ts5it_x_world1.id=ts5it_x_world4.id
    GROUP BY ts5it_x_world1.nameUser
    che mi restituisce esattamente quello che cerco.
    non capisco perchè non funziona nel codice php....

    Il risultato che voglio ottenere è la selezione di tutti i record nelle 4 tabelle la cui somma del campo "pop" sia compresa in un certo valore fornito dall'utente
    Esempio
    codice:
    idUser     tab1.pop    tab2.pop    tab3.pop   tab4.pop
    19              45        43         43      43
    25             103       95          90      85
    19              87        87          87      87
    se imposto un massimo di variazione di 10, in output devo avere solo l'idUser 19. Posso fare questo con una sola query?
    Non capisco dove sta, nella tua query, la discriminante sulla differenza inferiore a 10

  3. #3
    Esatto, il controllo che la differenza di quel campo nelle tabelle sia minore di 10 lo faccio con php, andando a pescare con una select tutti i valori. Quello che vorrei fare è, se possibile, una select che esclude a priori gli id i cui campi pop abbiano una differenza di 10(questo "10" è passato dall'utente, può essere 10 come può essere 200 o 0).

    Riassumendo: dovrei fare una select che per ogni utente va a sommare in ogni tabella il campo pop (per ogni utente c'è più di un record), e da questa filtrare i record la cui differenza di quei campi è maggiore di un tot definito dall'utente, consideriamo 10 ad esempio.

    Ripeto, la query che ho scritto funziona su phpmydmin (senza considerare lo scarto di 10, cioè somma solo il campo pop per ogni idUser in ogni tabella, il che può anche andarmi bene, lo scarto lo calcolo in php), ma quando implemento il codice nella pagina non mi dà alcun risultato.

    Una query simile funzionante nel codice è questa:
    codice:
    SELECT SUM(pop) AS sumPop FROM ".$server."_x_world1 WHERE idUser=".$arFilter['idUser']."
    che funziona per una tabella sola.

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.