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

Requêtes PostgreSQL Discussion :

Gérer des identifiants : traitement récursif ou pas ! [9.3]


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    paysan débrouillard
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : paysan débrouillard
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut Gérer des identifiants : traitement récursif ou pas !
    Bonsoir!

    Je n'arrive pas à faire ce dont j'ai besoin... (et je débute avec PostgreSQL, et le SQL d'une manière générale...).

    Voici la situation :
    - j'ai une table qui stocke des couples d'identifiants (tags) synonymes
    - chaque nouveau couple de tags renseigné est affublé d'un identifiant propre à ce couple
    - un seul tag peut avoir de nombreux synonymes sur plusieurs lignes
    - à chaque nouveau couple de tags il est possible que j'associe des groupes de tags synonymes jusque-là dissociés (car il manquait un couple de tags observés pour faire le lien)

    - J'ai besoin de générer un identifiant unique de l'objet qui porte ces nombreux tags

    Par Exemple :
    La table de synonymes, dont les enregistrements sont ajoutés par lot lors d'importations, est structurée de cette manière :
    id | tag1 | tag2
    1 | G0001 | G0001
    2 | P0856 | P0856
    3 | G4596 | G4596
    4 | A0023 | A0023
    5 | Z9999 | Z9999
    6 | P0856 | G4596

    Les 5 premiers tuples identifient des tags uniques.
    Le tuple 6 associe les tuples 2 et 3... donc une petite requête met a jour en :
    id | tag1 | tag2
    1 | G0001 | G0001
    2 | P0856 | P0856
    3 | G4596 | G4596
    4 | A0023 | A0023
    5 | Z9999 | Z9999
    2 | P0856 | G4596

    Mais comment faire pour associer dans le même temps le tag G4596?
    id | tag1 | tag2
    1 | G0001 | G0001
    2 | P0856 | P0856
    2 | G4596 | G4596
    4 | A0023 | A0023
    5 | Z9999 | Z9999
    2 | P0856 | G4596

    Et lorsque ce sont des cascades beaucoup plus longues qui s'opèrent... là c'est la galère!
    par ex en ajoutant encore :
    id | tag1 | tag2
    7 | A0023 | G0001
    8 | G4596 | G0001

    Je suppose qu'il me faut passer par des fonctions... que pour le coup je ne maîtrise pas!
    Pour info ma table fait plus de 70000 lignes... donc des cascades sur plusieurs niveaux, il y en a!

    Merci beaucoup à ceux qui pourraient me filer un coup de pouce!

    Pat.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    A quoi va servir cet identifiant "unique" ?

    Vous cherchez à ressortir quoi ?

  3. #3
    Membre habitué
    Homme Profil pro
    paysan débrouillard
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : paysan débrouillard
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut
    Bon allez, je rentre dans le détail :

    Les "tags" sont différentes marques (transpondeurs, balises, bagues, etc), toutes uniques, posées sur de grands animaux. Ces marques ont une durée de vie limitée et a chaque capture d'un animal, lorsqu'une marque est perdue (ou pour maintenance sur les balises actives), elle est remplacée par une autre. Chaque individu doit avoir au moins deux marques afin de garantir une traçabilité sur le long terme en cas de perte ou de difficulté de détection.
    Il arrive que des transpondeurs (petites balises passives sous le peau) "migrent" et deviennent difficilement détectable. Du coup un transpondeur peut "disparaître" et "réapparaître" plus tard... Cela génère des difficultés surtout sur des animaux que l'on pensait "nouveaux" et dont nous nous apercevons quelques saisons plus tard qu'ils ont déjà été identifiés donc avec déjà un lot d'informations attitrées.

    Des suivis scientifiques sont réalisés (biométrie, comportement, etc) lors de chaque contact avec les individus. En fonction du contact (capture ou observation), des marques différentes sont lues (transpondeurs nécessitent la capture, alors que les bagues sont lisibles a distance). Les informations collectées sont associées uniquement aux marques (tags) lisibles et lues, et je veux pouvoir compiler toutes les données d'un individu.

    Donc l'identifiant que je cherche a obtenir est celui de l'individu associé à chaque tag.

    Je ne sais pas si je répond à la question...?

    Patrick

  4. #4
    Membre habitué
    Homme Profil pro
    paysan débrouillard
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : paysan débrouillard
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut
    Citation Envoyé par map34 Voir le message
    Donc l'identifiant que je cherche a obtenir est celui de l'individu associé à chaque tag.
    Je n'ai pas besoin d'un identifiant fixe auquel je doive pouvoir me référer... s'il est re-généré a chaque fois, c'est pas grave...

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Citation Envoyé par map34 Voir le message
    Je n'ai pas besoin d'un identifiant fixe auquel je doive pouvoir me référer... s'il est re-généré a chaque fois, c'est pas grave...
    ok.


    Sinon pour le côté fonctionnel c'est sympa la description mais le 2eme poste est plus interessant techniquement.


    Bref, vous avez une hiérarchie, comment détermine-t-on qu'un tuple est un père, une feuille, y a-t-il des cycles possibles entre les différents tags ?


    La récursion peut répondre à votre problématique. (je ferai une proposition de requete cette aprem +)

  6. #6
    Membre habitué
    Homme Profil pro
    paysan débrouillard
    Inscrit en
    Mars 2015
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : paysan débrouillard
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2015
    Messages : 9
    Par défaut
    Citation Envoyé par punkoff Voir le message
    y a-t-il des cycles possibles entre les différents tags ?
    Qu'entendez-vous par "cycle"?

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/05/2014, 10h08
  2. Réponses: 1
    Dernier message: 12/03/2012, 15h52
  3. Gérer des fichiers "à pas fixe" ou "record" avec C#
    Par StringBuilder dans le forum C#
    Réponses: 10
    Dernier message: 01/12/2011, 14h48
  4. Scan récursif des répertoire, ça ne liste pas tout
    Par panthere noire dans le forum C++
    Réponses: 0
    Dernier message: 14/04/2009, 01h58
  5. Réponses: 5
    Dernier message: 14/09/2007, 20h44

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