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 :

Requête d'insertion avec condition


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 38
    Points
    38
    Par défaut Requête d'insertion avec condition
    Bonsoir,

    j'ai une table acteur, et elle doit avoir un seul administrateur, mais lors de l'insertion en utilisant la requête ci dessous, elle insère à chaque fois, et je n'ai pas su comment la rectifier pour tester avant insertion du tuple ;

    voici la requête mais elle génère des erreurs avec distinct
    s'il vous plait aidez moi!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    insert  into test.aa
    Distinct Values (null,'mmm','iiii','admin');

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    En effet distinct n'a pas sa place ici.

    Mais je n'ai pas compris quelle condition tu voudrais appliquer pour refuser l'insertion...
    Avec quelques lignes d'exemple ce serait plus clair, sans doute. (lignes à insérer, lignes à refuser, raison du refus)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre émérite Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Points : 2 520
    Points
    2 520
    Par défaut
    Je pense qu'il ne veut qu'un seul admin dans sa table.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO MaTable (col1, col2, col3)
    VALUE ('a','z','admin')
    WHERE col3 NOT IN (SELECT col3 FROM MaTable)
    ~ Lola ~

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 803
    Points
    30 803
    Par défaut
    Mais une telle requête n'est pas conforme au standard SQL...

    Peut-être comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    INSERT INTO MaTable (col1, col2, col3)
    SELECT  'a'     AS col1
        ,   'z'     AS col2
        ,   'admin' AS col3
    FROM    dual    src
    WHERE   NOT EXISTS
            (   SELECT  1
                FROM    MaTable tgt
                WHERE   src.col3 = tgt.col3
            )
    Si tu n'utilises pas Oracle, DUAL est une table d'une seule ligne.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    Bonsoir,
    j’essaie maintenant d'importer des informations depuis une autre table dans autre une base de donnée, et le probleme du insert reste toujour, je vous explique :

    les deux tables ont la même structure, voici la requête d'insertion que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    INSERT INTO releverNote (idTypeInfo,reference,statutInfo,delaival,univ,nomEtud,prenomEtud) 
    SELECT   DISTINCT null, reference, 'initial' , '10jr' , univ,nomEtud,prenomEtud FROM  composant_validation.relevernote
    elle marche bien, mais si je l’exécute une 2eme fois j'obtiens des champs dupliquées, grâce a l'auto incrment
    j'ai essayé cette requête, mais elle ne me fais même pas l'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    INSERT INTO composant_validation_2.releverNote (idTypeInfo ,reference,statutInfo,delaival,univ,nomEtud,prenomEtud)
    SELECT   DISTINCT null, reference, 'initial' , '10jr' , univ,nomEtud,prenomEtud
    FROM  composant_validation.relevernote src
    WHERE   NOT EXISTS
            (   SELECT  reference
                FROM    relevernote tgt
                WHERE   src.reference = tgt.reference
            )
    alors est ce que vous avez une idée, sur l'insertion des champs sans duplication, merci pour votre aide
    NB: je suis sous MySQL

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 38
    Points
    38
    Par défaut
    bonsoir, j'ai trouvé la solution,le problème était un oublie de référencement voici le code pour ceux qui aurons le même problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    INSERT INTO composant_validation_2.releverNote (idTypeInfo ,reference,statutInfo,delaival,univ,nomEtud,prenomEtud)
    SELECT   DISTINCT null, reference, 'initial' , '10jr' , univ,nomEtud,prenomEtud
    FROM  composant_validation.relevernote src
    WHERE   NOT EXISTS
            (   SELECT  reference
                FROM    composant_validation_2.relevernote tgt
                WHERE   src.reference = tgt.reference
            )

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

Discussions similaires

  1. Update or insert avec conditions sur les champs
    Par calou_33 dans le forum SQL
    Réponses: 7
    Dernier message: 04/08/2010, 10h36
  2. [AC-2003] Requête mise à jour avec condition IN
    Par buzz73 dans le forum VBA Access
    Réponses: 19
    Dernier message: 30/07/2009, 12h03
  3. Réponses: 3
    Dernier message: 08/05/2007, 17h32
  4. Insertion avec condition
    Par cassou@laposte dans le forum Requêtes
    Réponses: 6
    Dernier message: 11/02/2007, 10h22
  5. INSERT avec condition d'une table à une autre
    Par papipasto dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2006, 13h51

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