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

  1. #1
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    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 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 577
    Points
    52 577
    Billets dans le blog
    5
    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 136
    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 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    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
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    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 136
    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 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    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 expérimenté
    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
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Sous quel SGBD travailles tu?
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  7. #7
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    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 ...

  8. #8
    Nouveau membre du Club
    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
    Points : 27
    Points
    27
    Par défaut
    C'est sous IBM PureData (Netezza).
    Oui je me suis rendue compte que la requête n'est pas valide dans le cas des vues avec des sous requêtes et des unions.

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    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 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    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 ...
    Oui, c'était l'objet de mon post #3

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