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 :

INSERT multi-lignes avec valeurs connues


Sujet :

Langage SQL

  1. #1
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut INSERT multi-lignes avec valeurs connues
    Bonsoir,
    je voudrais insérer dans une table MU en une seule instruction INSERT une suite de lignes à partir d'une liste de valeurs connues.
    La structure de la table MU est la suivante :
    MSGID : NUMBER(6)
    UTIID : VARCHAR2(8)

    D'autre part, je dispose d'une table UTILISATEUR qui recense les valeurs possibles pour UTIID.
    Pour un MSGID donné (= à 1000 dans l'exemple ci-dessous) et une liste d'UTIID donnés, je voudrais donc créer les lignes correspondantes dans la table MU. J'ai pensé à faire qq chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO MU(MSGID, UTIID)
      SELECT 1000, UTILISATEUR.USRID
      FROM UTILISATEUR
      WHERE USRID IN ('user1', 'user2', 'user3')
    Mais je trouve dommage d'introduire une sous-requête faisant intervenir la table UTILISATEUR alors que je connais déjà 'user1', 'user2', 'user3', et qu'ils n'ont pas besoin d'être recherchés en base.

    Comment éviter d'introduire cette table dans la sous-requête ?
    Merci d'avance pour vos réponses.

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Un INSERT avec "VALUES" ne vous permet d'insérer qu'une seule ligne à la fois,

    Un INSERT avec un SELECT me paraît tout à fait adapté à votre problématique, je ne vois pas ce que vous lui reprochez ?

  3. #3
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Merci de votre réponse. Ce que je lui reproche c'est l'interrogation dans la table UTILISATEUR inutile puisque je connais les valeurs de UTIID à insérer.
    Je voudrais qq chose dans le genre, ce n'est pas correct, mais c'est pour donner l'idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO MU(MSGID, UTIID) 
    VALUES (1000, UTIID IN ('user1', 'user2', 'user3'))
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO MU(MSGID, UTIID) 
      SELECT 1000, UTIID
      FROM ('user1', 'user2', 'user3')
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO MU(MSGID, UTIID) 
      SELECT *
      FROM ((1000, 'user1'),
            (1000, 'user2'),
            (1000, 'user3'))
    Est-il possible de générer une table (ou une colonne) par énumération de valeurs ?

Discussions similaires

  1. INSERT avec valeur connue et résultat d'un SELECT.
    Par itokia dans le forum Requêtes
    Réponses: 3
    Dernier message: 02/09/2011, 16h07
  2. insert multi lignes avec le même id
    Par wikiele dans le forum Développement
    Réponses: 7
    Dernier message: 21/08/2011, 09h56
  3. INSERT SQL : problème avec valeurs à entrer
    Par St-Jean dans le forum VBA Access
    Réponses: 5
    Dernier message: 25/09/2007, 16h18
  4. Insertion de ligne avec VBA
    Par ANTMA dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 24/09/2007, 14h10
  5. INSERT avec valeur connue et résultat d'un SELECT...
    Par snoop dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 27/04/2005, 08h54

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