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 :

Simplification d'un INSERT INTO


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut Simplification d'un INSERT INTO
    Bonjour,
    j'aimerais simplifier cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO 'matable'
    ('module', 'produit', 'nom')
    VALUES ('991', '1', 'toto'), ('992', '2', 'toto'), ('993', '3', 'toto') etc ... ;
    sachant qu'il y a 1000 produit auquels je dois ajouter le nom 'toto' et que les modules doivent etre incrémenter de 1000 à 2000.

    Information supplémentaire :

    de plus la 2eme valeur est le resultat de cette requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DISTINCT produit FROM 'matable' WHERE 1
    ça serait cool de l'ajouter comme ça à la place de 1 2 3 4 5 etc ...

    quant à la 1ere valeur ça doit se mettre à la suite de mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT MAX(module) FROM 'matable'

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    Après avoir fais le tour des cours ...je ne trouve rien

    Peut etre est-ce impossible??

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Par défaut
    Bonjour,

    Si tu es sous Oracle, tu peux utiliser CONNECT BY.
    Sinon, tu peux le faire par script.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    c du mysql.

    y'a pas une requete permettant de le fire?
    qu'entend tu par script?
    je prgm en php

  5. #5
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Euh... tu insères dans la table 'matable' une valeur pour la colonne 'produit' qui elle-même vient de la même table 'matable' ? !
    Idem pour la colonne 'module' qui doit contenir le MAX de cette même colonne ?

    J'ai l'impression qu'en voulant simplifier ton cas réel, tu nous as donné des informations fausses. Donne-nous ton cas réel ce sera plus simple. Ca m'étonnerait que la table à alimenter s'appelle 'matable', ainsi que les deux autres.

    Bref, respecte les règles du forum en nous donnant la structure de tes tables.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    143
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 143
    Par défaut
    Bonjour,
    si c'est bien la meme table.

    matable :

    module_id produit_id nom_tache

    le module_id est unique
    le produit_id peut appartenir à plusieurs module_id
    le nom_tache peut appartenir à plusieurs produit_id

    le but étant pour chaque produit_id d'avoir un nouveau nom_tache.
    Pour cela il faudrait créer autant de module_id que de produit_id ayant pour nom-tache le nom voulu.

    c'est pour cela que j'ai :
    SELECT DISTINCT produit_id FROM 'matable' WHERE 1
    pour selectionner tout les produit_id une seule fois

    et donc cette requete fonctionne :
    INSERT INTO 'matable'
    ('module_id', 'produit_id', 'nom_tache')
    VALUES ('991', '1', 'toto'), ('992', '2', 'toto'), ('993', '3', 'toto') etc ... ;
    mais si j'ai 1000 produit_id c'est trop long...

    dans mes values,
    la premiere valeur est le max de mon module_id incrémenté
    la 2eme valeur est
    SELECT DISTINCT produit_id FROM 'matable' WHERE 1
    incrémenté à chaque fois
    et la troisème est un nom identique à chaque fois.

    j'espere avoir été clair et que c'est possible ... en moins de 1002 lignes ...

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/10/2006, 14h28
  2. probleme clé sequentiel avec insert into
    Par shake dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2004, 15h54
  3. probleme d'INSERT INTO et JavaScript
    Par Matlight dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/03/2004, 15h36
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

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