Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Ottimizzare query

  1. #1

    Ottimizzare query

    Sto crcando di imparare comandi leggermete più avanzati di mysql e stavo cercando di capire il comando JOIN.

    Credo che questa serie di comandi possa essere ottimizzato con tale comando,ma non capisco come.

    Ecco come ho risolto in modo lento e macchinoso :-)

    Premetto che devo prendere dei dati dai vari campi di tre tabelle per crearne una sola con i soli campi necessari.

    $query = "select * from regioni order by codice";
    $res = mysql_query($query) or die (mysql_error());
    while ( $row = mysql_fetch_array($res) ){
    $q1 = "select * from province where regione = '$row[codice]' order by regione";
    $res1 = mysql_query($q1) or die (mysql_error());
    while ( $row1 = mysql_fetch_array($res1) ){
    $q2 = "select * from comuni where provincia = '$row1[sigla]' order by comune";
    $res2 = mysql_query($q2) or die (mysql_error());
    while ( $row2 = mysql_fetch_array($res2) ){
    $comune = str_replace("'","''",$row2['comune']);
    $provincia = str_replace("'","''",$row1['provincia']);
    $regione = str_replace("'","''",$row['regione']);
    $q4 = "insert into comuni_ (comune,provincia,cap,regione) values ('$comune','$provincia','$row2[cap]','$regione')";
    mysql_query($q4) or die (mysql_error());
    }
    }
    }

  2. #2
    dovresti poter fare tutto con una query.

    codice:
    $query = "insert into comuni_ (comune,provincia,cap,regione)
             select comuni.comune, province.provincia, comuni.cap, regioni.regione
             from regioni
             inner join province ON regioni.codice = province.regione
             inner join comuni ON comuni.provincia = province.sigla
             order by regione, provincia, comune
             ";
    devi solo verificare la relazione tra le tabelle che ho presunto dal tuo post ma in realta' non conosco. Se da errore nell'order by aggiungi la tabella al campo. es: regioni.regione

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

  3. #3
    Ti ringrazio molto,a me serviva principalmente per capire meglio l'uso del JOIN con un esempio pratico da me utilizzato.

    Ora mi studio meglio la query.

    Grazie ancora.
    Ciao

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.