Page 1 sur 1

Postgresql, informations sur les tables ...

Posté : 02 mai 2006, 19:05
par jojolapine
Bonjour à tous, je voudrait trouver une commande sql qui me permettrait de lister les différents champs d'une table donnée...?
c'est pour faire une recherche sur une table et proposer de rechercher un terme dans les différents champs éxistants...
voila merci d'avance... :)
PS: j'ai déja essayer avec SHOW(), ça marche pas :cry:

Posté : 02 mai 2006, 23:24
par Cyrano
SHOW() tout seul ne correspond à rien, il faut utiliser SHOW TABLES;
Tu obtiendras la liste des tables sous le champ tables_in_nomdetatable.

Ça donne par exemple:

Code : Tout sélectionner

mysql> SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | animals | | auteur | | departements | | livre | | notations | | regions | | test | +----------------+

Posté : 03 mai 2006, 09:18
par Vaedan
Cyrano, sous PostgreSQL ce n'est pas pareil ! Sous MySQL il faut faire :

Code : Tout sélectionner

SHOW FULL FIELDS FROM table [FROM bdd]
Cette synthaxe n'est pas supporté pour PostgreSQL je crois ...

Posté : 03 mai 2006, 09:23
par Cyrano
Autant pour moi, j'avais omis ce détail. Mais c'est une syntaxe standard, à vérifier, ça devrait fonctionner aussi sous PostGreSQL... :-k

Posté : 03 mai 2006, 10:39
par jojolapine
Ben apparement Vaedan a bien raison, je n'arrive pas à faire la requête avec postgres... :cry:
y me renvoi tjrs une erreur de syntaxe....
Si quelqun a une autre idée?

Posté : 03 mai 2006, 10:51
par Cyrano
La doc de PostGreSQL peut-être ? :-k

Posté : 03 mai 2006, 11:16
par Vaedan
Il doit surement exister un projet tel que PHPMyAdmin pour PgSQL, trouve et décortique !

Posté : 03 mai 2006, 11:24
par ouckileou
Il doit surement exister un projet tel que PHPMyAdmin pour PgSQL, trouve et décortique !
http://www.pgadmin.org/

Posté : 03 mai 2006, 11:31
par Vaedan
Deja essaie ça :

Code : Tout sélectionner

SHOW COLUMNS FROM sometable
En bidouillant je viens de trouver une fonction interressante pour MySQL : mysql_list_fields(). Je viens d'en coder une d'en l'esprit, essaie là pour voir.
function pg_list_fields( $db_conn, $table_name )
{
    // Requête préliminaire
    $res = pg_query($db_conn, 'SELECT * FROM ' . $table_name . ' LIMIT 1' );

    // Nombre de champs
    $num = pg_num_fields($res);

    // Stockage
    $fields = array();

    for ( $i = 0; $i < $num; $i++ )
    {
        $fields[] = array
        (
            'Field' => pg_field_name( $res, $i ),
            'Type'  => pg_field_type( $res, $i ),
            'Null'  => pg_field_is_null( $res, $i )
        );
    }

    return $fields;
}
EDITs: MaJ du code