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

Développement SQL Server Discussion :

Insérer une requête a une table


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut Insérer une requête a une table
    Bonjour,

    J'ai une table CLIENT auquel je souhaiterais insérer la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT     C.C_NUMCLT, C. C_NOMCLT, C.C_STATUCLT, COUNT(I.IN_NUMCLT) AS C_NBRINTER
    FROM         dbo.CLIENT C LEFT OUTER JOIN
                          dbo.INTERVENTION I ON C.C_NUMCLT = I.IN_NUMCLT
    GROUP BY   C.C_NUMCLT, C. C_NOMCLT, C.C_STATUCLT
    Cette requête compte le nombre d'intervention effectuée par client.

    Car en fait, pour le moment je l'ai créé sous " l'analyseur de requête " et donc lorsque j'actualise ma table "CLIENT" le nombre d'intervention effectué n'est pas inscrit, donc en gros je souhaiterais savoir comment faire?? Si cela est possible bien entendu ??

    Merci d'avance!!

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Par défaut INSERT INTO SELECT
    J'espere avoir compris ta demande...

    Pour renseigner une table avec le contenu d'une vue ou d'une ou plusieurs autres table, vous avez la commande INSERT INTO Table SELECT requete.

    exemple :

    insert into agriculteur2 select nom,login,password from vue_agri;

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut réponse à ylarvor
    Bonjour,

    Je vient d'essayer ce que tu ma dit de faire sous " l'Analyseur de Requete " donc ce ki me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO CLIENT (C_NUMCLT, C_NOMCLT, C_STATUCLT)
    SELECT C_NUMCLT, C_NOMCLT, C_STATUCLT, COUNT(I.IN_NUMCLT) AS C_NBRINTER
    FROM         dbo.CLIENT C LEFT OUTER JOIN
                          dbo.INTERVENTION I ON C.C_NUMCLT = I.IN_NUMCLT
    GROUP BY C_NUMCLT, C_NOMCLT, C_STATUCLT
    et il m'affiche l'erreur suivant :
    Serveur*: Msg 121, Niveau 15, État 1, Ligne 5
    La liste de sélection de l'instruction INSERT contient plus d'éléments que la liste d'insertion. Le nombre de valeurs de SELECT doit être le même que le nombre de colonnes de INSERT.
    Je voit pas comment résoudre ce souci, pouvez-vous m'aider s'il vous plait ??

  4. #4
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Le msessage st clair, dans ton insert tu n'as que 3 colonnes alors que tu en sélectionnes 4, il faut ajouter une colonne dans laquelle tu insèreras ton résultat de COUNT

    Citation Envoyé par loic20h28 Voir le message
    Bonjour,

    Je vient d'essayer ce que tu ma dit de faire sous " l'Analyseur de Requete " donc ce ki me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO CLIENT (C_NUMCLT, C_NOMCLT, C_STATUCLT)
    SELECT C_NUMCLT, C_NOMCLT, C_STATUCLT, COUNT(I.IN_NUMCLT) AS C_NBRINTER
    FROM         dbo.CLIENT C LEFT OUTER JOIN
                          dbo.INTERVENTION I ON C.C_NUMCLT = I.IN_NUMCLT
    GROUP BY C_NUMCLT, C_NOMCLT, C_STATUCLT
    et il m'affiche l'erreur suivant :


    Je voit pas comment résoudre ce souci, pouvez-vous m'aider s'il vous plait ??
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Par défaut réponse à Fleur-Anne.Blain
    Bonjour,

    Voila je vien de rajouter un champ ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO CLIENT (C_NUMCLT, C_NOMCLT, C_STATUCLT, C_NBRINTER)
    SELECT C_NUMCLT, C_NOMCLT, C_STATUCLT, COUNT(I.IN_NUMCLT) AS C_NBRINTER
    FROM         dbo.CLIENT C LEFT OUTER JOIN
                          dbo.INTERVENTION I ON C.C_NUMCLT = I.IN_NUMCLT
    GROUP BY C_NUMCLT, C_NOMCLT, C_STATUCLT
    Mais quand tout va mal faut biensur que cela ne cesse pas!!LOL.
    Serveur : Msg 2627, Niveau 14, État 1, Ligne 1
    Violation de la contrainte PRIMARY KEY 'PK_CLIENT'. Impossible d'insérer une clé en double dans l'objet 'CLIENT'.
    L'instruction a été arrêtée.
    Comment puis-je faire pour résoudre ce problème??

    Merci d'avance!

  6. #6
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Encore une fois c'est normal tu veux insérer 2 fois la même ligne alors qu'il ne peut y avoir de doublons au niveau de la clé primaire qui est par définition unique. Mais pour ajouter le compteur à chaque ligne tu es bien obligé de le faire...

    Donc après l'ajout de ta colonne count, tu dois réinsérer le tout. Soit tu exportes tes données puis réinsert en ajoutant ton resultat de count (donc toutes tes colonnes remplies) soit en plus manuel et longuet, tu prépares ton insert avec tes données , tu supprimes ta ligne avant de la réinsérer..mais très lourd si tu as 100000000000000000000 lignes à modifier

    T'es sur MS SQL Server tu peux utiliser SSIS pour faire tout ca, si tu connais ca simplifiera largement ta tâche, sinon si tu as peu de ligne fait le à la main

    Citation Envoyé par loic20h28 Voir le message
    Bonjour,

    Voila je vien de rajouter un champ ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO CLIENT (C_NUMCLT, C_NOMCLT, C_STATUCLT, C_NBRINTER)
    SELECT C_NUMCLT, C_NOMCLT, C_STATUCLT, COUNT(I.IN_NUMCLT) AS C_NBRINTER
    FROM         dbo.CLIENT C LEFT OUTER JOIN
                          dbo.INTERVENTION I ON C.C_NUMCLT = I.IN_NUMCLT
    GROUP BY C_NUMCLT, C_NOMCLT, C_STATUCLT
    Mais quand tout va mal faut biensur que cela ne cesse pas!!LOL.


    Comment puis-je faire pour résoudre ce problème??

    Merci d'avance!
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

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

Discussions similaires

  1. Insérer le résultat d'une requête dans une autre table
    Par kroma23 dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/02/2011, 15h13
  2. Insérer le résultat d'une requête dans une table
    Par el_gringo16 dans le forum Débuter
    Réponses: 9
    Dernier message: 19/05/2010, 16h05
  3. Insérer le contenu d'une requête dans une table
    Par guadian dans le forum VBA Access
    Réponses: 1
    Dernier message: 20/07/2007, 20h16
  4. passer une valeur d'une requête a une table
    Par LesLemmings dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/06/2006, 14h13
  5. Insérer le rsultat d'une requète dans un table
    Par MadMarc dans le forum Access
    Réponses: 4
    Dernier message: 25/01/2006, 12h09

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