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

MS SQL Server Discussion :

Creation d'une table par étapes


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut Creation d'une table par étapes
    Bonjour

    je souhaite créer une table à partir de plusieurs requêtes SQL


    Supposons que ma table finale doit contenir 9 colonnes (Col1, Col2, ..., Col9)
    Et que je dispose de 3 requêtes (trés complexes entre parenthèses)
    Requete1 --> Col1 ,Col2, Col3
    Requete2 --> Col4 ,Col5, Col6
    Requete3 --> Col7 ,Col8, Col9
    et que si je dispose les 9 colonnes dans l'ordre, j'obtiens mon résultat souhaité.

    Toutes mes requêtes générent le même nombre de lignes car j'utilise toujours un left join avec une même table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select ...
    from A 
    left join B ON ..
    left join C ON ..
    Ya t il un moyen de créer la table de cette maniére ? (le insert into champ par champ ne marche évidemment pas )
    Merci

  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
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ...
    INTO MaNouvelleTable
    FROM ...
    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
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut
    Merci de lire le post avant de répondre..

    select into manouvelletable from .. (Requete1)

    Le problème c'est ce qui se passe pour Requete2 et Requete3

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Par défaut
    Bonjour,

    Si ta requête de sélection renvoie la liste de tes 9 champs à suivre tu peux utiliser la syntaxe INSERT.... SELECT de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO MaTable (ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9)
    SELECT ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9
    FROM A 
    LEFT JOIN B ON ..
    LEFT JOIN C ON ..
    Je ne sais pas si cette syntaxe correspond à ta recherche.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Non, ce que SQLPro a voulu dire c'est ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT Col1, Col2, ..., Col9
    INTO MaNouvelleTable
    FROM A 
    LEFT JOIN B ON ..
    LEFT JOIN C ON ..
    Ce code fonctionne parfaitement bien.

    Pourriez-vous nous donner l'erreur ou le résultat remonté svp ?

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Par défaut
    Je n'ai pas trois tables A, B et C
    et je ne veux pas passer par des tables intermédiaires..

    J'ai 3 requetes, chacune générant 3 colonnes.
    L union des 3 colonnes col1, col2, .... col9 correspond a ma table

    je peux effectivement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    INSERT INTO MaTable (ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9)
    SELECT ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9
    FROM (.. Requete1 .. ) A 
    LEFT JOIN ( .. Requete2 ..) B ON ..
    LEFT JOIN ON (.. Requete3 .. )  C ON ..

    Le fait est que chaue requete nécessite beaucoup de temps et que je ne m'en sortirai jamais si je fais ça.

    je cherche donc un moyen d'alimenter la table colonne par colonne..

    Merci

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonsoir,

    Votre première requête peut être un
    SELECT mesColonnes
    INTO maNouvelleTable
    FROM maTable.

    Vos requêtes suivantes devront être du type :

    INSERT INTO maNouvelleTable (maListeDeColonnes)
    SELECT maListeDeColonnesCorrespondantes

    Et soyez un peu plus aimable, on essaie de vous aider

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/10/2007, 20h27
  2. Creation d'une table avec plusieurs clés
    Par mic79 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/06/2005, 11h17
  3. creation d'une fonction par l'utilisateur
    Par michelk dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 15/03/2005, 09h53
  4. Réponses: 6
    Dernier message: 28/12/2004, 16h09
  5. Réponses: 2
    Dernier message: 02/11/2004, 12h38

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