IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[Oracle 9i] Afficher toutes les colonnes d'une table sauf la dernière


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut [Oracle 9i] Afficher toutes les colonnes d'une table sauf la dernière
    Bonjour,

    Je souhaite afficher le contenu d'une table sauf la dernière colonne qui est une colonne géométrique.

    J'arrive à récupérer le nombre de colonne à afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(column_name) FROM user_tab_columns WHERE TABLE_NAME = PROFIL AND column_name <> 'GEOM';
    J'arrive à récupérer le nom des colonnes à afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT column_name FROM user_tab_columns WHERE TABLE_NAME = PROFIL AND column_name <> 'GEOM';
    Mais après je sèche!! Merci d'avance de votre aide..

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Le formattage de ta requête n'est pas à faire par le moteur SQL : le mieux est de contruire ta requête via un prog dans lequel tu gères tes noms de colonnes dans un tableau, il te sera alors facile de supprimer telle colonne de ta liste.

    cf l'article Les erreurs les plus fréquentes en SQL
    et en particulier le paragraphe 9. Cosmétique...
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par Xo
    Le formattage de ta requête n'est pas à faire par le moteur SQL
    Complètement d'accord avec toi, mais je développe en PHP et il n'aime pas que je lui passe un SELECT * sur une table contenant une colonne géométrique (type SDO_GEOMETRY).
    Ma requête passe bien dans SQL*PLus ou PLSQL Developer, PHP aime beaucoup moins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Select * from PROFIL order by ID_PROFIL;
     
    Warning: ocifetch() [function.ocifetch]: OCIFetch: 
    ORA-00932: types de données incohérents : 
    %s attendu ; %s obtenu
    mais là il faut peut-être mieux que je me tourne vers le forum Oracle ou Développement Web!


    -- EDIT --

    PS: Je n'ai pas besoin d'afficher le contenu de ma colonne géométrique, alors si t'as une solution via SQL (même si je te le concède, ce n'est pas trés propre) je suis preneur!

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Il est en général déconseillé d'utiliser un "SELECT * ..." , pourquoi ne pas préciser la liste des colonnes ? Tu as beaucoup de tables et de colonnes ?
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 30
    Points : 22
    Points
    22
    Par défaut
    J'utilise le même script d'affichage pour toutes mes tables. Ma requète SQL est créée dynamiquement via des variables PHP suivant la table que l'utilisateur a choisi de consulter.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ociparse($con,"select * from gmsig.".$cod_table." order by ".$col1);

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Citation Envoyé par Xo
    Il est en général déconseillé d'utiliser un "SELECT * ..." , pourquoi ne pas préciser la liste des colonnes ? Tu as beaucoup de tables et de colonnes ?
    déconseillé ! Je te trouve gentil, cela devrait être interdit !
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 571
    Points
    52 571
    Billets dans le blog
    5
    Par défaut
    1) tu peut caster ta colonne en VARCHAR. Elle passera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT COL1, COL2, ... CAST(GEOM AS VARCHAR(200)) AS GEOM_STRING
    FROM   PROFIL
    2) tu peut utiliser du SQL dynamique et en utilisant les vues d'information de schéma, demander toutes les colonnes à l'exclusion de la dernière. Pour la liste des colonnes sauf la dernière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT COLUMN_NAME
    FROM   INFORMATION_SCHEMA.COLUMNS
    WHERE  TABLE_SCHEMA = '???'
      AND  TABLE_NAME = 'PROFIL'
      AND  ORDINAL_POSITION <> (SELECT MAX(ORDINAL_POSITION)
                                FROM   INFORMATION_SCHEMA.COLUMNS
                                WHERE  TABLE_SCHEMA = '???'
                                  AND  TABLE_NAME = 'PROFIL')
    Cepandant je crois qu'Oracle ne respecte pas la norme SQL sur ce point et qu'il faut faire avec les imbitables tables système d'Oracle.
    A partir de cela, construire une requête dynamiquement devient un jeu d'enfant.
    Exemple avec SQL Server :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    DECLARE @QUERY VARCHAR(8000)
     
    SET @QUERY = 'SELECT '
     
    SELECT @QUERY = @QUERY + COLUMN_NAME + ', '
    FROM   INFORMATION_SCHEMA.COLUMNS
    WHERE  TABLE_SCHEMA = '???'
      AND  TABLE_NAME = 'PROFIL'
      AND  ORDINAL_POSITION <> (SELECT MAX(ORDINAL_POSITION)
                                FROM   INFORMATION_SCHEMA.COLUMNS
                                WHERE  TABLE_SCHEMA = '???'
                                  AND  TABLE_NAME = 'PROFIL')
     
    SET @QUERY = SUBSTRING(@QUERY, 1, LEN(@QUERY) - 2) + ' FROM ???.PROFIL'
     
    EXEC (@QUERY)
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. renommer toutes les colonnes d'une table
    Par shrd92 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 11/02/2011, 09h37
  2. Réponses: 4
    Dernier message: 04/10/2010, 19h01
  3. nom de toutes les colonnes d'une table
    Par jeorcal dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/07/2010, 22h31
  4. Recherche sur toutes les colonnes d'une table
    Par Romain_marine dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/04/2010, 14h35
  5. Afficher toutes les colonnes d'une Datatable
    Par enjoy dans le forum JSF
    Réponses: 7
    Dernier message: 01/02/2007, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo