Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170

    [Php-SQL] Problema con distinct

    Volevo sapere se tramite un join si possano riunire queste 2
    query, in quanto così ci mette troppo tempo ad eseguire la query:
    devo ottenere l'id_anagrafica della tab. registro senza ripetizioni(tramite un distinct o group by?!?) ed ottenere tutti i campi della tab. anagrafica che corrispondono a questi id:
    Codice PHP:
    $sql_reg "SELECT id_anagrafica FROM registro WHERE id_cooperativa = 
    $id_coop AND data_op >= '$data_inizio' AND data_op <= '$data_fine
    GROUP BY id_anagrafica"

    $result_reg pg_query($sql_reg) or die("$sql_regpg_last_error()); 
    while ( 
    $data_reg pg_fetch_array($result_reg) ) { 
        
    $sql_anag "SELECT * FROM anagrafica WHERE id_anagrafica = 
    $data_reg[id_anagrafica]"
        if ( (isset(
    $citta)) && ($citta != "tutto") ) $sql_anag.= " AND 
    citta_dit = '
    $citta'"
        if ( (isset(
    $attivita)) && ($attivita != "tutto") ) $sql_anag.=
    AND id_attivita = 
    $attivita"


    Si riesce ad ottenere lo stesso risultato facendo un'unica query?

  2. #2
    Hai provato con SELECT *


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    SELECT DISTINCT a.* FROM registro r JOIN anagrafica a ON a.id_anagrafica = r.id_anagrafica WHERE r.id_cooperativa = $id_coop AND r.data_op BETWEEN '$data_inizio' AND '$data_fine'
    AND a.citta_dit = '$citta'
    AND a.id_attivita = $attivita

    Ovviamente le due ultime condizioni rimangono legate ai casi che hai previsto

  4. #4
    Originariamente inviato da piero.mac
    Hai provato con SELECT *

    sbonk..... avevo letto come fosse una sola tabella "anagrafica"....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170

    Sintassi query ok, ma elaborazione troppo lenta

    Perfetta, era la query che mi serviva!
    L'unico problema è che nonostante abbia migliorato l'elaborazione della query, lo script che utilizzo (mi crea un pdf dal risultato della query) è troppo lento, infatti explorer da errore e firefox pure! se provo ad eseguire la query da phpPgAdmin viene eseguita, ma mi da :Tempo di esecuzione totale: 73.169 ms
    Un'infinità!!!!!
    Ci sono aaccorgimenti particolari per velocizzare il tempo di esecuzione ed elaborazione della query?!?!
    Thanks

  6. #6
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120

    Re: Sintassi query ok, ma elaborazione troppo lenta

    Originariamente inviato da xmaxfane
    Tempo di esecuzione totale: 73.169 ms
    Dipende se quel punto rappresenta i decimali o le migliaia.
    Nel primo caso non è tanto, nel secondo è una follia.

    Le tabelle sono indicizzate a dovere?

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    170
    La tabella anagrafica ha circa 13000 record, registro 52000 circa,
    però filtrata con id_cooperativa=5 solo 3089(infatti ho provato a
    sostituire la tabella registro con una vista che appunto contiene 3089
    record)
    Il campo id_anagrafica di anagrafica è chiave primaria, quindi con
    indice, in registro ho messo l'indice a data_op, che è citato nella
    condizione della query
    Il risultato sono 1507 record
    Il tempo di esecuzione purtroppo è in migliaia (75,250.211 ms), quindi
    un'eternità!
    Possibile che non si possa processare questa quantità di dati in tempi umani!??!

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.