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

Accès aux données Discussion :

insert a partir d une autre table


Sujet :

Accès aux données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 14
    Points
    14
    Par défaut insert a partir d une autre table
    J 'essaye d inserer des donnes dans une table "NEW_TABLE" a partir des donnes d'une autre table "OLD_TABLE"

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /* INSERTION  */
     
    INSERT INTO NEW_TABLE (
    CHAMP1,
    CHAMP2,
    CHAMP3,
    CHAMP4
    )
    VALUES
    ('W'
    , (SELECT DISTINCT DATE FROM OLD_TABLE)
    ,(select count (*) from OLD_TABLE where CHAMP1 = 'W' and CHAMP2 = 'OK')
    , 'OK')

    (SELECT DISTINCT DATE FROM OLD_TABLE) donne la date

    (select count (*) from OLD_TABLE where CHAMP1 = 'W' and CHAMP2 = 'OK')
    donne un nombre.

    J'ai 2 erreurs

    (SELECT DISTINCT DATE FROM OLD_TABLE)
    Subqueries are not allowed in this context. Only scalar expressions are allowed.

    (select count (*) from OLD_TABLE where CHAMP1 = 'W' and CHAMP2 = 'OK')
    Subqueries are not allowed in this context. Only scalar expressions are allowed.
    Temporairement, j'ai remplacé par des valeurs mais le but est que ça soit automatisé et que j'ai pas à tout faire a la main.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    VALUES
    ('W'
    , 301109
    , 130
    , 'OK')

    Je sais pas comment, il faut faire, es ce que quelqu un aurait une solution.
    Merci d avance.
    Faut t il mettre ca sous une variable ? J'ai un peu cherché mais j'ai pas reussi a mettre le resultats d un select sous une variable.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 753
    Points
    39 753
    Par défaut
    C'est une question SQL qui n'a rien à voir avec .NET...
    Qu'est-ce que c'est comme base de données ? Je pense que certaines supportent des sous-requêtes dans un insert, mais pas toutes. De toutes façons, même si c'était supporté, il faudrait que tes sous-requêtes ne renvoient qu'une valeur pour que ce soit valable.

    Il faudrait plutôt faire quelque chose comme ça :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    INSERT INTO NEW_TABLE (
    CHAMP1,
    CHAMP2,
    CHAMP3,
    CHAMP4
    )
    SELECT DISTINCT
    'W'
    , DATE
    , count (*)
    , 'OK'
    FROM OLD_TABLE WHERE CHAMP1 = 'W' AND CHAMP2 = 'OK'

    Mais ça ne correspond peut-être pas exactement à ce que tu veux...

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 14
    Points : 14
    Points
    14
    Par défaut
    Ca marche pas aussi. Merci quand même.
    J'ai rajouté les donné à la main pour le moment.
    Je vais essayer de voir si c'est possible avec une procédure.

  4. #4
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par jpapa Voir le message
    Ca marche pas aussi.
    Quand tu dis que ca ne marche pas, cela veut dire quoi, tu as un message d'erreur ?

    En regardant bien ta requête, j'ai un doute sur ton but...

    Ce que je comprends, par rapport à ta requète d'origine, c'est que, si dans OLD_TABLE, tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Champ1    Champ2     Date
    W         OK        12/12/2009
    W         OK        12/12/2009
    W         OK        12/12/2009
    X         OK        12/12/2009
    Y         OK        11/12/2009
    W         OK        14/12/2009
    W         OK        14/12/2009
    W         NOK       14/12/2009
    Tu veux obtenir, dans NEW_TABLE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Champ1    Champ2    Champ3      Champ4
    W         OK        12/12/2009  3
    W         OK        14/12/2009  2
    C'est ca ?

    Si c'est ca, essaye cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO NEW_TABLE (CHAMP1,CHAMP2,CHAMP3,CHAMP4)
    SELECT DISTINCT O.CHAMP1, O.DATE, (select count (*) from OLD_TABLE O2 WHERE O2.CHAMP1 = O.CHAMP1 AND O2.CHAMP2 = O.CHAMP2 and O.DATE = O.DATE) , O.CHAMP2
    FROM OLD_TABLE O WHERE O.CHAMP1 = 'W' AND O.CHAMP2 = 'OK'
    (pas testée, alors )

Discussions similaires

  1. INSERTION dans une table à partir d'une autre table
    Par Ordonnateur dans le forum Oracle
    Réponses: 5
    Dernier message: 07/12/2011, 18h36
  2. Réponses: 2
    Dernier message: 29/10/2008, 16h31
  3. requete insert a partir d'une autre table
    Par c+cool dans le forum Langage SQL
    Réponses: 1
    Dernier message: 04/07/2008, 10h46
  4. Réponses: 1
    Dernier message: 23/01/2007, 16h57
  5. Réponses: 4
    Dernier message: 03/06/2006, 13h45

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