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 :

Insérer plusieurs lignes dans un tableau sans tenir compte des doublons


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 81
    Points : 36
    Points
    36
    Par défaut Insérer plusieurs lignes dans un tableau sans tenir compte des doublons
    Bonjour à tous.
    Alors voilà, j'aiune base de donnée avec 2 tables me posant problème. La table machine a pour clé primaire un code en caractère. La table rapporté utilise ce code comme clé étrangère, mais également primaire. Pour toutes requêtes, tout se passe bien.

    Cependant, je doit importer plusieurs millier de lignes de 2 classeurs excel du même nom que les tables. Le classeur machine comporte toutes les machines, l'autre classeur certaine d'entre elles avec d'autres informations.

    Pour des raisons pratique, dans cette table rapporté, je souhaite insérer tout d'abord les lignes du classeur du même nom, puis toute les lignes de l'autre classeur. Mais du coup, je me retrouve bloqué par les doublons.

    J'ai d'abord essayer de trouver diverse formules sur Excel me permettant de mettre les informations du classeur rapporté en face de la ligne correspondante sur l'autre classeur, en vain.

    Puis je me suis dis que peut être existe-t-il une requete sql permettant de faire l'insertion tout en disant si ce code existe, alors tu n'insert pas celui là, mais les autres, et ainsi de suite pour toute la liste. Selement voilà, je ne sai pas comment faire et je demande votre aide.

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Un exemple avec des données serait le bienvenu car il y a un risque de mauvaise interprétation de votre problématique et donc de répondre à côté

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 81
    Points : 36
    Points
    36
    Par défaut
    Alors j'ai les tables :
    machine (code, marque, modèle ...)
    rapporté (code#, réconcilié, description ...)

    Dans machine, j'ai :
    ED45, HP, Machin ...
    ED50, ACER, Truc ...
    ED55, Acer, Bidule ...
    ED60, HP, Chouette ...
    ...

    Dans rapporté j'ai :
    ED45, NON, Vista
    ED55, NON, W7
    ...

    Dans rapporté, il y a tout ce qu'il y avait dans le classeur rapporté. Dans cet exemple, ED50 et ED60 ne se trouvent pas dans rapporté.
    Je veux donc ajouter tous ceux étant dans machine, dans rapporté, sous la forme :
    ED50, OUI, ""
    (Le OUI est la valeur par défaut, le reste est vide).
    Mais ayant plusieurs milliers de ligne dans chaque classeur, je ne peut pas trier à la main pour mettre le bon code issu de rapporté en face du même code issu de machine. Il me faudrait plus de 50 ans.

    Du coup, à coté, je peut créer un classeur où je mettrais la colonne code issu de machine avec les autres critères de rapporté.

    Mais je vais les insérer en SQL pour éviter plusieurs problèmes.

    Je voudrais donc faire un INSERT INTO rapporté ('code', 'réconciliés', 'description') values (toutes les lignes de mon classeur à insérer) mais si le code est déjà dans cette table, ignoré cette machine et passer à la suivante.
    Mais quelle formule exact pourrait faire ça ? Je suis sur MySQL.

  4. #4
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Bonjour,

    Je pense qu'une requête MERGE INTO conviendrait dans votre cas.

    Malheureusement MySQL ne connait pas cette requête, vous pouvez par contre regarder du côté de REPLACE ou INSERT ... ON DUPLICATE.

    Bonne continuation
    FSiebert

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 81
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup FSiebert je vais essayer ça

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 81
    Points : 36
    Points
    36
    Par défaut
    Merci beaucoup FSiebert.
    J'ai eu un peu de mal à comprendre comment marchais le duplicate, mais ça y est j'ai compris, et en prenant mon sujet dans le sens inverse de ce que j'avais prévu ça marche et c'est même mieux quand à la gestion des mises à jour.

  7. #7
    Membre expert

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2012
    Messages
    612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2012
    Messages : 612
    Points : 3 066
    Points
    3 066
    Par défaut
    Ravi d'avoir pu vous aider.
    Passez votre sujet en résolu

    Bonne continuation

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2012
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2012
    Messages : 81
    Points : 36
    Points
    36
    Par défaut
    Merci Vous aussi

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

Discussions similaires

  1. [XL-2003] Insérer plusieurs ligne dans un tableau
    Par deamonRav dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/04/2010, 14h07
  2. Insérer plusieurs lignes dans une cible à partir d'une ligne source
    Par marcelus45 dans le forum ODI (ex-Sunopsis)
    Réponses: 4
    Dernier message: 15/06/2009, 17h13
  3. [MySQL] insérer plusieurs lignes dans une table
    Par ozyman dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 12/02/2009, 22h33
  4. Réponses: 3
    Dernier message: 13/06/2008, 20h33
  5. Insérer plusieurs caractères dans un tableau
    Par Gigatrappeur dans le forum Ada
    Réponses: 4
    Dernier message: 28/12/2007, 21h24

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