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

    [MySQL] innodb - struttura tabelle e relazioni

    Ciao a tutti!
    Ho fatto molte ricerche, ma non ho trovato una soluzione.

    per visualizzare la struttura di una tabella eseguo questa query:
    DESCRIBE nomeTabella;

    per poter visualizzare le relazioni tra tabelle quale query dovrei scrivere?
    vorrei ottenere un risultato simile a:

    campo1.tabella1 è chiave esterna di campo2.tabella2

    (immagino che non potrò mai ottenere un risultato che mi dica "relazione molti-a-uno", ma per lo meno sapere se un campo è chiave esterna di quale altro campo penso sia possibile con innoDB. immagino sarà qualcosa di simile a SHOW CREATE TABLE...)

    grazie!

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Se disponi di mysql 5 puoi ricorrere all'information_schema

    codice:
    select concat('chiave esterna: ', table_name, '.',
    column_name, ' referenzia: ',
    referenced_table_name, '.',
    referenced_column_name ) as relazioni
    from information_schema.key_column_usage
    where referenced_table_schema = 'nome_database'
    and referenced_table_name is not null
    order by table_name, column_name;

  3. #3
    quindi se ho ad esempio una relazione one-to-one tra le tabelle A e B dove:

    A
    id -> primary key
    idB -> foreign key

    B
    id -> primary key

    come diventa la query?

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Nella query che ti ho scritto devi solo cambiare il nome del database.

  5. #5
    si hai ragione! funziona! la query è ottima! Grazie!
    Ma devo farti ancora una domanda... (mi sembra eccessivo aprire una nuova discussione sotto PHP)
    perchè se lancio quella query da phpmyadmin visualizzo il risultato voluto,
    invece se lancio la query con mysql_query($query); mi ritorna il valore Resource id #71 invece della stringa ottenuta? (Come posso fare per visualizzare correttamente il risultato?)

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Quello è il resource.
    http://it.php.net/manual/en/language.types.resource.php

    Devi ciclare il recordset.

    Codice PHP:
    $query mysql_query("select ...");
    while (
    $row mysql_fetch_assoc($query)) {
        echo 
    $row['relazioni'].'
    '
    ;


  7. #7
    ma certo!


    em... ultima domanda
    e se volessi vedere le relazioni di solo una tabella (invece di tutte le tabelle del db)?

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Un minimo di spirito d'iniziativa no eh?

    Aggiungi alla clausola

    where referenced_table_schema = 'nome_database'

    ciò che ti serve

    and table_name = 'quello che vuoi'

    oppure referenced_table_name se vuoi filtrare su di essa.

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.