Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69

    [PHP-MYSQL] Sincronizzazione

    Salve a tutti, sto cercando di effettuare una sorta di "sincronizzazione" tra due tabelle di un db.

    TABELLA A: campo1....= Stringa in minuscolo con a volte iniziali Maiuscole
    TABELLA B: campo1....= Stessa stringa di sopra ma tutto in MAIUSCOLO
    dovrei fare una cosa di questo tipo, in maniera più semplificata, in ottica ottimizzazione.

    Codice PHP:
      $sql="SELECT campo1 FROM tabellaB";
          
    $invia_sqlmysql_query$invia_sql$cn);
          while(
    $riga mysql_fetch_array($invia_sql)) {
              
    $sql1="SELECT campo1 FROM TabellaA";
              
    $invia_sql1=mysql_query($sql1$cn);
              while(
    $row mysql_fetch_array($invia_sql1)) {
                   if(
    stristr($row[0], $riga[0]) != FALSE) {
                         
    $up="UPDATE TabellaA SET campox(A)=campox(B)";
                          ..... 
    Ora, siccome mi rendo conto che per ottenere ciò che vorrei ottenere il processo sopra scritto è estremamente laborioso e dispendioso, chiedo: C'è un modo per semplificare il tutto? se si, come? Ringrazio anticipatamente chi vorrà consigliarmi.

  2. #2
    E' indispensabile che siano identiche anche nel "case"?
    Perchè...se i campi li setti come "case insensitive" puoi anche fregartene...le join o le select non creeranno problemi

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Sinceramente, devo ragionare un attimo sulle complicazioni che potrebbero venirsi a creare seguendo il tuo suggerimento. In ogni caso, come si setta un campo "case insensitive"?

    Edit:
    Stupidamente m'era sfuggita l'esistenza della funzione UPPER, quindi ho provato così

    Codice PHP:
    $sql="SELECT campo1 FROM tabellaB";
          
    $invia_sqlmysql_query$invia_sql$cn);
          while(
    $riga mysql_fetch_array($invia_sql)) {
              
    $sql1="SELECT campo1 FROM TabellaA WHERE UPPER(campo1)=$riga[0]";
              
    $invia_sql1=mysql_query($sql1$cn);
              
    $up="UPDATE TabellaA SET campox(A)=campox(B)";
               ..... 
    Tuttavia, avendo a che fare con un db molto grande chiedo: Secondo voi è possibile una ulteriore ottimizzazione?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Anzitutto ringrazio per l'attenzione. Piupigei, il mio problema non è quello di confrontare il campo (minuscolo) con quello (Maiuscolo). A quello scopo ho usato la funzione stristr(che è case insensitive). Il problema è come fare per evitare che questo confronto avvenga all'interno di due cicli while molto grandi che provocherebbero sicuramente un timing out della query. Anche usando UPPER(campo1)=$riga[0] nella query, l'operazione risulta essere abbastanza laboriosa. Per questo cercavo più che altro un'idea per raggiungere lo scopo con il miglior codice possibile.

  5. #5
    Se non è importante che "pippo" sia diverso da "Pippo" (ovvero il campo nel db può essere case insensitive) fare tutte quelle query che hai citato diventa superfluo.

    Per cambiare in case insensitive, da mysql, per la tabella
    codice:
    ALTER TABLE `Table` DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci
    e per il campo
    codice:
    ALTER TABLE `Table` CHANGE `Campo` `Campo` VARCHAR( 10 ) CHARACTER SET latin1 COLLATE latin1_general_ci
    (ovviamente VARCHAR( 10 ) devi adattarlo alla reale struttura del campo)


  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    69
    Grazie mille, ho appena appreso una cosa nuova. Provo a seguire il tuo consiglio nella speranza che non vengano a crearsi incompatibilità. Nel frattempo, giusto per una curiosità, lascio aperto il quesito sopra scritto, per capire come gestire in futuro questo tipo di situazioni. Ancora grazie per il supporto.

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.