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

    confronto struttura 2 tabelle mysql...

    Salve, che query posso usare per vedere se la struttura della tabella_A differisce dalla struttura della tabella_B e sapere quali campi ha in più la tabella_B?
    Grazie 1000

    neorf
    www.TriX.IT - Web Development

  2. #2
    vuoi sapere quali campi hanno differenti oppure solo il numero di campi differenti??...la logica che mi viene in mente e quella di farti una piccola estrazione ( anche di 1 record ) poi con la mysql_fetch_array ti valorizza un'array, all'interno di questo array avrai i tuoi campi a db e i valori del singolo record estratto ( che non ti interessa ). fai la stessa cosa per l'altra tabella così avrai due array ArrayA ArrayB poi li usi a secondo del tipo di confronto che ti serve

  3. #3
    mi interessa sapere quali campi la tabella_a contiene in più rispetto alla tabella_b.
    quindi se tabella_a contiene:id,nome, indirizzo e la tabella_b contiene:id,nome, vorrei sapere che c'è indirizzo in +.
    Spero di essermi spiegato.
    ciao

    neorf
    www.TriX.IT - Web Development

  4. #4
    dovresti usare due cicli

    Ciclo su ArrayA indice = $a
    Ciclo su ArrayB indice = $b
    SE ArrayA[$a] <> ArrayB[$b]
    Valorizzo ArrayC con nome tabella e nome campo
    Fine SE
    Fine Ciclo ArrayB
    Fine Ciclo ArrayA

    Pulisco variabili $a e $b.

    Ciclo su ArrayB indice = $b
    Ciclo su ArrayA indice = $a
    SE ArrayB[$b] <> ArrayA[$a]
    Accodo in ArrayC con nome tabella e nome campo
    Fine SE
    Fine Ciclo ArrayA
    Fine Ciclo ArrayB

    nel primo doppo ciclo cè il confronto dei campi dalla tabella A alla tabella B nel secondo ciclo doppio cè il confronto dei campi dalla tabella B alla A.

    in ArrayC avrai nome tabella e nome campo

    Esempio

    Tab. A
    Id Username Password Nome

    Tab. B
    Id Username Password Data


    Array C
    Tab. A Nome
    Tab B Data


    così sai che nella Tab.A cè presente il campo Nome che in B non è presente e nella tabella B è presente un campo di nome Data che non è presente nella tabella A.

    naturalmente di questa logica non devi leggere il valore dei campi dell'array ma il nome del campo stesso

  5. #5
    ok grazie 1000, ma questo se il campo diverso è l'ultimo?
    se ho le 2 tabelle del tipo:
    Tab. A
    Id Username Genere Password

    Tab. B
    Id Provincia Username Password Data

    quindi anche con quantità diversa di campi?
    www.TriX.IT - Web Development

  6. #6
    Conclusione mi sono fatto questo script, che non confronta direttamente 2 tabella di un Db, ma fa questo:
    gli dai 1 db, ti trova tutte le tabelle e confronta quelle in base all'espresisone "explode". n
    nel mio caso le tabelle vecchie iniziano con old_, quindi fa il confronto tra old_tabella_A e tabella_A.
    stampa a video i numeri dei campi e nel caso in cui i campi differiscono stampa i valori dei nome dei campi, tutti, non solo quelli che differiscono
    Codice PHP:
    //elenca i nomi delle tabelle
    $result mysql_list_tables($db_name);

     while (
    $riga mysql_fetch_row($result)) {
    // SINGOLA TABELLA

    //IMPOSTO CONFRONTO TABELLE VECCHIE CON NUOVE
    $exploso=explode("old_",$riga[0]);

         if(
    $exploso[0]==''
    {
    //CONFRONTO TABELLE

    $tab1=$exploso[1];
    $tab2=$riga[0];
    echo 
    "
    confroto tra: [b]
    $tab1[/b] , [b]$tab2[/b]
    "
    ;

    $res1 mysql_query('select * from '.$tab1$db_conn);
    $res2 mysql_query('select * from '.$tab2$db_conn);


    echo 
    "
    "
    ;
    $numero_campi1=mysql_num_fields($res1);
    $numero_campi2=mysql_num_fields($res2);



    echo 
    "<table>";
    echo 
    "<tr><td>TABELLA
    $tab1
    "
    .$numero_campi1."</td><td>TABELLA
    $tab2
    "
    .$numero_campi2."</td></tr>";
    if(
    $numero_campi1!=$numero_campi2) {
    echo 
    "<tr><td>";
    for (
    $i=0$i<$numero_campi1 $i++ ) {
           
    $var1 mysql_field_name($res1$i);
           
    //$row_title .= $var;
    echo $var1.'
    '
    ;
       }
    echo 
    "</td><td>";
    for (
    $i=0$i<$numero_campi2 $i++ ) {
           
    $var2 mysql_field_name($res2$i);
           
    //$row_title .= $var;
    echo $var2.'
    '
    ;
       }
    echo 
    "</td></tr>";
    }

    echo 
    "</table>";


    //CONFRONTO TABELLE
    }
    else {
    //echo "tabella nuova, non old";
    echo " - - - ";
    }  
        



    www.TriX.IT - Web Development

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.