Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1689 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Trouver la plus grande clé qui ne contient pas de données communes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Trouver la plus grande clé qui ne contient pas de données communes

n°2362428
Tibar
Posté le 16-09-2020 à 23:41:40  profilanswer
 

Salut,
 
Petit problème, même pour le titre je galère, du coup je vais vous donner un exemple.
J'ai une table constituée de 2 colonnes : ID et DATA
ID est numérique, DATA est un varchar.
 
Les données d'exemple sont les suivantes :  
 
ID   -   DATA
1    -   A
1    -   B
1    -   C
2    -   D
2    -   E
2    -   F
3    -   G
4    -   A
4    -   D
4    -   H
5    -   C
5    -   I
5    -   J
6    -   D
7    -   H
7    -   J
 
Mon objectif est de mettre à jour l'ID avec la valeur d'ID la plus grande qui ne contient pas de DATA de l'ID. Par exemple, dans ce cas, l'ID 1 contient A, B, C. Le premier ID qui contient soit A, soit B soit C est l'ID 4, du coup cela signifie que je peux remplacer 1 par 3 et 2 par 3.
De la même façon, je peux remplacer 4 par 5 puisqu'il n'y a pas de données communes entre les ID 4 et 5, idem pour 6 et 7.
(dans la réalité, les ID ne se suivent pas forcément, il peut y avoir des sauts)
 
Aujourd'hui, j'ai cette requête :  
 

Code :
  1. select max(p1.id)
  2. from test p1
  3. where p1.id > 1
  4. and p1.id < (
  5. select min(p3.id) as borne_sup
  6. from test p2
  7. inner join test p3 on p3.data= p2.data and p3.id > p2.id)


 
ce qui revient, pour chaque ligne, à trouver le plus grand ID qui précède le plus petit ID qui contient une DATA commune.
 
Je dois donc faire un curseur, trouver le max inférieur au min commun, mettre à jour, recréer le curseur à partir du min supérieur au dernier max trouvé etc., et la requête n'est pas super performante puisqu'elle parcourt plusieurs fois la table.
 
Je veux aussi garantir l'ordre d'intégration, c'est à dire que je pourrais détecter les ID 1, 2, 3 et 7 comme n'ayant pas de DATA commune, mais comme 4 et 5 ont des données portées par 7, je ne veux pas remplacer 1, 2 et 3 par 7.
 
Je n'ai pas trouvé de moyen de faire le traitement en une seule fois, je ne vois pas trop de mots clés qui pourraient m'aider.
 
Merci,
 
 
 
 

mood
Publicité
Posté le 16-09-2020 à 23:41:40  profilanswer
 

n°2362467
rufo
Pas me confondre avec Lycos!
Posté le 17-09-2020 à 12:29:35  profilanswer
 

Y'a moyen de savoir exactement à quoi correspondent ces données (ID et data), svp ? Parce que ta difficulté vient peut-être d'un pb de modélisation des données dans la BD :/
 
Perso, j'ai du mal à comprendre la raison de ce traitement : pourquoi tu dois le faire a posteriori et pourquoi c'est pas fait au moment de la saisie/import ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2362520
rufo
Pas me confondre avec Lycos!
Posté le 17-09-2020 à 23:15:45  profilanswer
 

J'ai vu ton MP. Aujourd'hui, avec le big data, les entreprises ont tendance à conserver toutes leurs data, qu'elles soient structurées ou pas, "au cas où". Avec des BD NoSQL, c'est pas un problème. En effet, avec l'avancée des algos, les entreprises ne savent pas forcément déterminer a priori de quelles données elles vont avoir besoin pour réaliser tel ou tel traitement
 
Avant, avec les SGBDR, on ne gardait que les données qui servaient à faire un traitement clairement identifié (ou plusieurs traitements identifiés). Et dans ce cas, on structurait la BD pour permettre ce ou ces traitements.
 
Si tu cherches du ROI sur l'exploitation de données, je te recommande de lire quelques livres sur le big data et NoSQL ;) Dans la collection Eyrolles, il y en a de très bons.
https://www.amazon.fr/bases-données [...] 00WTGK4HC/
https://www.amazon.fr/Data-science- [...] 212142439/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Trouver la plus grande clé qui ne contient pas de données communes

 

Sujets relatifs
Récupérer et modifier les données[SQL] Trouver une chaine dans une phrase
Récolte de données sportiveméthode pour trouver les répertoires qui ne contiennent pas
Excel - intégration de données JSON via requête sur site WEBDonnées en temps réel
Recuperation des données d'un fichier texte[PostgreSQL] Question cluster (HA, réplication de données)
(reconversion)Demande d'aide pour trouver une formation JAVA svpRecherche de valeur la plus grande dans une requête.
Plus de sujets relatifs à : Trouver la plus grande clé qui ne contient pas de données communes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR