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

SQLite Discussion :

Remplacement en série


Sujet :

SQLite

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 49
    Points
    49
    Par défaut Remplacement en série
    Bonjour à tous,
    J'utilise sqlite avec sqlite studio et je commence à faire des requêtes qui fonctionnent.
    J'ai une BD dont certaines tables font plus de 18 millions d'enregistrements.
    Une table indique chaque filiale et son numéro d'entreprise.
    Une entreprise peut avoir plusieurs filiales.

    filiale 1 , entreprise A
    filiale 2 , entreprise B
    filiale 2 , entreprise A
    filiale 1 , entreprise C
    filiale 1 , entreprise B
    filiale 3 , entreprise A

    Je voudrais remplacer chaque "filiale" par l'entreprise correspondante ... :

    entreprise A , entreprise A
    entreprise B , entreprise B
    entreprise A , entreprise A
    entreprise C , entreprise C
    entreprise B , entreprise B
    entreprise A , entreprise A

    Je cherche la requête sql, mais je n'y arrive pas ...
    Ligne par ligne, ça va faire une requête de 100 kilomètres ...

    Si quelqu'un voit une solution ...
    Un grand merci à ceux qui se pencheront là-dessus.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Je ne vois pas bien l'intérêt car vous ne faites que perdre de l'information, ni la difficulté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update MaTable set Filiale = Entreprise;

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 49
    Points
    49
    Par défaut réponse
    J'ai eu un problème familial (résolu...) à peine la question posée ... merci bcp pour la réponse ... j'essaye ça ...

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Je rejoins Waldar dans son scepticisme, avant d'exécuter la requête, vous devriez nous expliquer pourquoi vous voulez réaliser cette modification et communiquer la description exacte de la table et de ses index.
    Non seulement vous perdez de l'information, mais vous créez une redondance, donc des risques d'incohérences
    Autre risque : aujourd'hui le couple filiale + entreprise est probablement unique, ce ne sera évidemment plus le cas avec cette mise à jour. Certaines contraintes unique seront donc violées et il faudra faire des choix concernant les autres colonnes.

    Bref c'est loin d'être clair et faire la mise à jour est très probablement une erreur.
    À expliciter.

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 32
    Points : 49
    Points
    49
    Par défaut erreur ...
    Bonsoir,
    Je suis trompé ... toutes mes plates excuses ...
    C'est dans les autres tables qu'il faut remplacer la filiale par l'entreprise ...
    Et c'est cette table qui donne les correspondances:

    filiale 1 , entreprise A
    filiale 2 , entreprise B
    filiale 2 , entreprise A
    filiale 1 , entreprise C
    filiale 1 , entreprise B
    filiale 3 , entreprise A

    Dans d'autres tables, je dois remplacer toutes les filiales par l'entreprise correspondante...
    Une entreprise peut avoir ou pas, plusieurs filiales. Mais pas l'inverse, évidemment.
    Mille excuses à ceux qui se sont penchés là-dessus et qui m'ont fait remarquer, à juste titre, que j'étais un peu à la masse ...

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    que j'étais un peu à la masse ..
    j'en rajoute, pas qu'un peu et en restant "généraliste", cela ne fera pas avancer le schmilblic !

    une description même partielle des tables impliquées aiderait à une proposition plus étoffée
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 133
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par patwag Voir le message
    Dans d'autres tables, je dois remplacer toutes les filiales par l'entreprise correspondante...
    Ca change un peu les données du problème, mais pas l'inquiétude quant au bien fondé...

    Je m'explique :
    • soit ces autres tables font référence à une table des filiales grâce à des foreign key, auquel cas remplacer une valeur de FK de filiale par une valeur de FK d'une entreprise n'a aucun sens, c'est le modèle de données qu'il faut revoir ;
    • soit ces autres tables contiennent un libellé de filiale à remplacer par un libellé d'entreprise, mais c'est une grosse erreur de modélisation, seule la table des filiales doit contenir le libellé de la filiale et seule la table de entreprises doit contenir le libellé de l'entreprise.


    Bref, on en revient aux mêmes questions que déjà posées précédemment
    • Pourquoi voulez-vous faire ce remplacement, quel est le besoin fonctionnel ?
    • Quelle est la description exacte (script CREATE TABLE) des tables en jeu ?

Discussions similaires

  1. Utilisation d'une Hashmap pour remplacer une série de tests
    Par veve25 dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 30/03/2017, 10h27
  2. Réponses: 2
    Dernier message: 02/12/2014, 14h49
  3. Remplacements en série avec QString
    Par stanfillirenfro dans le forum Débuter
    Réponses: 2
    Dernier message: 02/06/2012, 11h38
  4. [BASH] Remplacer une série d'espace
    Par Mister_Kp dans le forum Linux
    Réponses: 5
    Dernier message: 10/05/2011, 09h29
  5. [Sed]Remplacer une série d'espaces par un délimiteur
    Par progfou dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 24/01/2011, 15h09

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