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 :

Mélanger INSERT et SELECT


Sujet :

Langage SQL

  1. #1
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 18
    Par défaut Mélanger INSERT et SELECT
    Bonjour,

    Je souhaiterais faire une requête INSERT en utilisant un SELECT dedans mais uniquement pour un champs.

    Je m'explique par un exemple :
    Je veux insérer une nouvelle voiture :
    - mark : "reno"
    - modele : "kongoo"
    - numéro : là je veux faire un select

    en gros, si c'était possible, ma requête SQL serait du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO 'voiture' (mark, modele, numero) VALUES ('reno', 'kongoo', SELECT max(numero)+1 FROM 'voiture' WHERE mark = 'reno')
    vous voyez le truc ?

    Alors maintenant, est-ce possible ?
    je n'ai rien réussi à trouver à ce sujet sur Internet...

    merci d'avance pour votre aide :-)

  2. #2
    Membre confirmé Avatar de dedeloux
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 104
    Par défaut
    Salut,

    Je pense que c'est possible de la faire comme ça, tu as essayé cette requête ? Est ce qu'elle marche ?

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2002
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 35
    Par défaut
    C'est tout simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO voiture (mark, modele, numero)  
    (SELECT 'reno', 'kongoo', max(numero)+1 
     FROM voiture WHERE mark = 'reno')
    D'ailleurs si tu n'as que des valeurs, tu n'es pas obligé(e) d'utiliser le 'VALUES', tu peux utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    INSERT INTO voiture (mark, modele, numero)  
    (SELECT 'reno', 'kongoo', 'numéro' 
     FROM DUAL)

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    Dans ce cas là, enlève le mot clé values :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    8i CYRIL> create table t08 (
      2  a number,
      3  b number,
      4  c number);
     
    Table créée.
     
    8i CYRIL> insert into t08 values (&a, &b, &c);
    Entrez une valeur pour a : 1
    Entrez une valeur pour b : 2
    Entrez une valeur pour c : 3
    ancien   1 : insert into t08 values (&a, &b, &c)
    nouveau   1 : insert into t08 values (1, 2, 3)
     
    1 ligne créée.
     
    8i CYRIL> /
    Entrez une valeur pour a : 12
    Entrez une valeur pour b : 13
    Entrez une valeur pour c : 14
    ancien   1 : insert into t08 values (&a, &b, &c)
    nouveau   1 : insert into t08 values (12, 13, 14)
     
    1 ligne créée.
     
    8i CYRIL> /
    Entrez une valeur pour a : 22
    Entrez une valeur pour b : 23
    Entrez une valeur pour c : 24
    ancien   1 : insert into t08 values (&a, &b, &c)
    nouveau   1 : insert into t08 values (22, 23, 24)
     
    1 ligne créée.
     
    8i CYRIL>  1  insert into t08
      2  select 33, max(b), 99
      3* from t08
    8i CYRIL> /
     
    1 ligne créée.
     
    8i CYRIL> select *
      2  from t08;
     
             A          B          C
    ---------- ---------- ----------
             1          2          3
            12         13         14
            22         23         24
            33         23         99
     
    4 ligne(s) sélectionnée(s).

  5. #5
    Membre averti
    Inscrit en
    Janvier 2006
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 18
    Par défaut parfait !
    Super nickel !

    merci beaucoup :-)

    finalement, c'était pas si compliqué en effet ;-)

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

Discussions similaires

  1. Insert avec select sur table avec Trigger d'insertion
    Par bran_noz dans le forum Développement
    Réponses: 5
    Dernier message: 23/12/2005, 15h38
  2. Insert avec select
    Par Alexandre` dans le forum Langage SQL
    Réponses: 11
    Dernier message: 25/01/2005, 16h16
  3. Incrémenter champ : insert into . select max(.) + 1 from .
    Par ludo.guy dans le forum Langage SQL
    Réponses: 10
    Dernier message: 25/11/2004, 15h39
  4. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 18h32
  5. [Insert et Select de la même table]
    Par lucimast dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/01/2004, 15h53

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