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 :

DIVISER Une colonne en plusieurs colonnes (SQL)


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 29
    Par défaut DIVISER Une colonne en plusieurs colonnes (SQL)
    Bonjour,

    Je souhaite diviser un champ dans une colonne en plusieurs colonnes comme le montre le schéma ci-dessous:

    table actuelle:

    -----------------------------------------------------------------------------------------------------------------
    + VIEWNAME + DEFINITION +
    -----------------------------------------------------------------------------------------------------------------
    + Le nom de la vue + SELECT (...) FROM (...) WHERE (...) ORDER BY (...) +
    +--------------------------------------------------------------------------------------------------------------+

    Résultat Souhaité:
    -----------------------------------------------------------------------------------------------------------------------------------
    + VIEWNAME + SELECT_CLAUSE + FROM_CLAUSE + WHERE_CLAUSE + ORDER_BY_CLAUSE +
    ----------------------------------------------------------------------------------------------------------------------------------
    + Le nom de la vue + les champs du select + Table + + +
    +----------------------------------------------------------------------------------------------------------------------------------

    J'aimerai savoir comment on peut créer une table en divisant la requête dans la définition de la vue en clause: select, from, where.

    Merci par avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    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 998
    Billets dans le blog
    6
    Par défaut
    incompréhensible. Merci de respecter la charte de postage : http://www.developpez.net/forums/a69...gage-sql-lire/

    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/ * * * * *

  3. #3
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 601
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    La difficulté est qu'il peut y avoir de nombreux pièges, comment allez vous les éviter
    - critères de recherche contenant des mots réservés (ex : WHERE colonne1 = ' FROM PARIS TO MADRID')
    - nombre et types différents de jointures (à l'ancienne via le where, JOIN, comment allez vous les restituer dans votre colonne "FROM CLAUSE"
    - SQL Dynamique éventuel
    - intersect, except, union, comment les restituez vous
    - requetes imbriquées (subselect)
    etc...

    En bref, ça sent l'usine à gaz

  4. #4
    Membre actif
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 29
    Par défaut
    Bonjour,
    Je vous remercie pour votre réponse.
    en effet j'ai essayé le code suivant:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
    VIEWNAME,
    DEFINITION,
    substr(DEFINITION, 7, strpos( DEFINITION, 'FROM')-7) as SELECT_CLAUSE,
    substr(DEFINITION, strpos(DEFINITION,'FROM')+5, case when strpos( DEFINITION, 'WHERE') <> 0 then strpos( DEFINITION, 'WHERE') else strpos( DEFINITION, ';') end) as FROM_CLAUSE,
    case when DEFINITION like '%WHERE%' then substr(DEFINITION, strpos(DEFINITION,'WHERE')+7, strpos( DEFINITION, ';'))  end as WHERE_CLAUSE
    FROM _V_VIEW

    ça donne exactement ce que je veux comme résultat sauf dans la clause From, il retourne également la clause du where!
    J'essaye de voir s'il n'y a pas une méthode plus simple à le faire.
    Merci:

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 601
    Billets dans le blog
    10
    Par défaut
    Comme mentionné précédemment, si par exemple une de vos colonnes a un nom qui contient "FROM" alors votre solution ne fonctionnera pas
    Plein d'autres raisons peuvent provoquer des résultats faux, cf. mon post précédent
    Encore une fois, une solution répondant à tous les cas sera une véritable usine à gaz

  6. #6
    Membre extrêmement actif
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Billets dans le blog
    6
    Par défaut
    Sous quel SGBD travailles tu?

  7. #7
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Comme mentionné précédemment, si par exemple une de vos colonnes a un nom qui contient "FROM" alors votre solution ne fonctionnera pas
    Pour moi, c'est le plus léger des soucis, d'autant plus qu'il peut se régler en recherchant sur 'FROM' entouré d'espaces / tabulations / retour à la ligne. Le vrai et principal problème à mon sens vient avec les sous-requêtes et donc la présence d'un WHERE décalé ... et ça, c'est quand même loin d'être anecdotique, parce que c'est quand même très fréquent dans une vue d'avoir des sous-requêtes ... sans compter le WITH ...

Discussions similaires

  1. [9.1] Fractionner une colonne en plusieurs en sql
    Par saigon dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/09/2016, 15h26
  2. [PHP 5.2] Comment Diviser une page en plusieurs colonne
    Par pacar dans le forum Langage
    Réponses: 5
    Dernier message: 28/07/2014, 16h47
  3. Réaliser une arborescence sur plusieurs colonnes
    Par vince16 dans le forum Langage
    Réponses: 1
    Dernier message: 11/11/2006, 12h33
  4. Réponses: 5
    Dernier message: 07/11/2006, 11h16
  5. [MFC] Classer une liste a plusieur colonne
    Par Kevgeii dans le forum MFC
    Réponses: 8
    Dernier message: 07/03/2005, 15h09

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