Visualizzazione risultati 1 fino 5 di 5

Discussione: Interazione tra tabelle

  1. #1
    Guest

    Red face Interazione tra tabelle

    Ciao a tutti. Ho un problemino (strano eh?) con php e database.

    In una pagina php ho una tabella che tratta di backup di progetti, la tabella funge da interfaccia semi-grafica di un database.
    In sostanza tutti i dati del db "Backup" sono trasferiti in lettura su questa tabella per rendere la comprensione dei dati più agevole.
    L'intestazione di tabella è :
    IdBackup NomeCommessa IdCliente IdTipoCommessa IdTipoBackup Data Numero Keywords

    IdCliente ad esempio richiama un numero nella tabella "Backup", il nome del cliente che però corrisponde a quell' id è nella tabella "Cliente".
    Come faccio dunque con questo e tutti gli altri Id a tradurre da id a nome? da numero a stringa corretta?
    Come posso eseguire questo scambio di informazioni tra database?

    Scommetto che la soluzione è una cavolata :)

    Grazie a tutti!

  2. #2
    baccante non è connesso Neofita
    Data registrazione
    30-05-2008
    Messaggi
    23

    Predefinito

    Se ho capito bene il problema basterebbe utilizzare l'operazione JOIN dell'SQL

  3. #3
    Guest

    Predefinito

    Ho cercato in rete ma non riesco ad applicarlo...

    Nella mia pag ho la selezione dati:

    Codice PHP:
    $query = "SELECT IdBackup,NomeCommessa,IdCliente,IdTipoCommessa,IdTipoBackup,Data,Numero,Keywords FROM Backup";
    poi l'invio della query..

    poi ho il ciclo che prende i dati
    Codice PHP:
    while ($row = mysql_fetch_assoc($result)) {
    $IdBackup = htmlentities($row['IdBackup']);
    $NomeCommessa = htmlentities($row['NomeCommessa']);
    $IdCliente = htmlentities($row['IdCliente']);
    $IdTipoCommessa = htmlentities($row['IdTipoCommessa']);
    $IdTipoBackup = htmlentities($row['IdTipoBackup']);
    $Data = htmlentities($row['Data']);
    $Numero = htmlentities($row['Numero']);
    $Keywords = htmlentities($row['Keywords']);
    e la tabella con l'echo dei valori:

    Codice PHP:
    echo "<tr>
    <td>
    $IdBackup</td>
    <td>
    $NomeCommessa</td>
    <td>
    $IdCliente</td>
    <td>
    $IdTipoCommessa</td>
    <td>
    $IdTipoBackup</td>
    <td>
    $Data</td>
    <td>
    $Numero</td>
    <td>
    $Keywords</td>
    </tr>"
    ;
    }
    Seguendo il tuo consiglio ho costruito a parte la formula:
    Codice PHP:
    $join_cliente = mysql_query("SELECT NomeCliente FROM Cliente JOIN Backup USING (IdCliente)");
    while (
    $row = mysql_fetch_assoc($join_cliente)) {
    echo
    $row['NomeCliente']." ";
    }
    che sputa fuori dei nomi (corretti - cioè i nomi della tabella Cliente che corrispondono all'elenco ordinato di IdCliente nella tabella Backup) ma cmq non riesco a mescolare questa formula con la mia pagina...
    I nomi dei Clienti devono comparire in corispondenza dei loro Id...
    Questa è la tabella finale dove a quanto pare devo fare una marea di Join!


    ..se non chiedo troppo posso domandare un'esempio pratico??
    Ultima modifica di ilaextras : 08-10-2008 alle ore 10.55.43

  4. #4
    baccante non è connesso Neofita
    Data registrazione
    30-05-2008
    Messaggi
    23

    Predefinito

    naturalmente per unire 2 tabelle con un JOIN le 2 tabelle devono avere un attributo in comune dove attuare il JOIN (gli attributi nelle 2 tabelle possono avere comunque nomi differenti.. basta che a valore uguale corrisponde "entità" uguali)

    quindi avendo le 2 seguenti tabelle :

    "Clienti" con i campi "nomeCliente" e "id"
    "Backup" con i campi "idBackup" , "nomeCommessa" , "idCliente" , "idTipoCommessa" , "idTipoBackup" , "data" , "numero" , "keywords"
    con il campo "id" di "Clienti" uguale al campo "idCliente" di "Backup" se si riferiscono allo stesso cliente..

    se fai
    Codice PHP:
    SELECT *
    FROM Clienti JOIN Backup ON Clienti.id = Backup.idCliente
    ti viene fuori una tabella con TUTTI i campi delle 2 tabelle di partenza e con le righe formate dalle righe della prima unite alle righe della seconda che hanno il campo "idCliente" uguale al campo "id" della prima (non sono molto bravo a spiegare mi sa )

    insomma una tabella con i seguenti campi:
    nomeCliente | id | idBackup | nomeCommessa | idCliente | idTipoCommessa | idTipoBackup | data | numero | keywords

    dove il campo "id" e il campo "idCliente" sono uguali....

    poi per avere la tabella finale che hai postato o agisci sul php prendendo solo i campi che ti servono, oppure sulla query SQL modificando il SELECT

    Codice PHP:
    SELECT idBackup,nomeCommessa,nomeCliente,idTipoCommessa,idTipoBackup,data,numero,keywords
    FROM Clienti JOIN Backup ON Clienti
    .id = Backup.idCliente
    sembra complesso, ma credo che se fai un paio di prove la cosa diventa molto più banale di quello che può sembrare dalla mia (confusa) spiegazione

    PS. Giusto per info...
    dopo il JOIN puoi mettere la clausola WHERE che attua una selezione sulla tabella ottenuta dal JOIN.... per esempio mettendo "WHERE nomeCliente='Rossi' ottieni una tabella come quella precedente, ma con solo i backup del cliente Rossi

  5. #5
    Guest

    Predefinito

    grazie mille!!!
    ho capito :) :)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •