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

MS SQL Server Discussion :

Table de jointure pour une seule table


Sujet :

MS SQL Server

  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut Table de jointure pour une seule table
    Bonjour,

    désolé pour le titre, je ne sais pas comment l'expliquer.
    j'ai une table reglements contenant une ligne pour chaque reglement. lorsque ces reglements sont annulés, une seoncd ligne ANN est ajouté dans la meme table, avec une autre date, mais les autres informations identiques.


    Actuellement, j'ai cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    id  | type  |   reference   |   date reg    
    -----------------------------------------
    1   |   REG | XXXXX1        |  15/09
    -----------------------------------------
    2   |   ANN |  XXXXX1       |  15/09
    les deux lignes sont "liées" car elles ont la meme date et le meme numero de série.

    malheureusement, cela decoule d'une architecture bidouillée depuis dix ans, et nous ne pourrons plus nous baser sur ces deux chants. Nous devons lier ces deux enregistrements dans les deux sans.

    nous avons alors penser à deux solutions:
    Solution 1: une colonne pointant vers l'enregistrement lié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    id  | type  |   reference   |   date reg    |  liaison
    ------------------------------------------------------
    1   |   REG | XXXXX1        |  15/09        |    2
    ------------------------------------------------------
    2   |   ANN |  XXXXX1       |  15/09        |    1

    solution 2: une table de jointure pour une seule table.
    toujours notre table de reglements plus une seconde table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    id  |  reg  |   ann  
    ---------------------------
    1   |  1    | 2
    liant ansi les id des deux enregistrements


    quelle serait la meilleure solution? la plus propre? le but etant de facilement en recuperant un enregistrement REG de savoir s'il possede un correspondant ANN(ulation)




    deuxieme question plus compliquées. comment, sachant qu'actuellement les enregistrements ne sont pas liés, peut-on mettre l'id du reglemetn correspondant. je sais que la date et la ref sont identiques mais je n'ai aucune idée de quelle facon tourner ma requete le plus simplement possible pour obtenir le resultat desiré.
    soit une table de jointure, soit pour chaque reglement ayant une annulation, indiquer l'id de cette annulation et faire de meme pour l'annulation en indiquant l'id du reglement (plus optionnel cela)

    d'avance merci
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Si tu maitrise la gestion des id (SET IDENTITY_INSERT ... ON) alors calcule l'id de la contre écriture de manière négative ! ainsi tu auras :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    id    | type  |   reference   |   date reg   
    -------------------------------------------
     127  |   REG | XXXXX1        |  15/09
    -------------------------------------------
    -127  |   ANN |  XXXXX1       |  15/09
    Donc aucune modif de structure.

    Cela découle de mon puzzle : Problème n° 10 - symétrie négative
    dans http://sqlpro.developpez.com/SQL_AZ_P.html

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Si tu maitrise la gestion des id (SET IDENTITY_INSERT ... ON)
    ==> mouarf au moins autant que je parle l'inuit


    mais je fais amplement confiance à ton jugement et je fais regarder ca de plus prêt

    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Je te proposerais plutôt des séquences (enfin j'appelle ça comme çà). Qui donnerait un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    id  | sequence |  type  |   reference   |  date reg  
    ------------------------------------------------------
    1   |     0    |  REG   |   XXXXX1      |  15/09      
    ------------------------------------------------------
    1   |     1    |  ANN   |   XXXXX1      |  15/09
    id et séquence seraient ta clé primaire.
    Par contre masser de l'ancienne table à la nouvelle risque d'être un peu approximatif.

    Enfin je dis ça par pur générosité car je ne suis pas un pro .

    [edit] trop lent, et en plus ma solution est moins bonne [/edit]
    Les Cours et tutoriels JavaScript
    Penser à la recherche et au bouton

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Enfin je dis ça par pur générosité car je ne suis pas un pro
    et moi donc ^^


    j'ai compris le but de ta sequence, mais ca ne correspondrait pas. en effet, ils ont (le REG et l'ANN) un id different pour le moment. dans ton cas, tu met le meme ID et une sequence.
    de plus, j'ai 95% de REG qui n'ont pas d'ANN correspondant. donc 100% des REG auront ici une sequence à 0, mais ca ne me dira pas juste avec cette ligne, si un ANN correspondant existe.
    c'est justement le but de ma bidouille sur la base

    Par contre masser de l'ancienne table à la nouvelle risque d'être un peu approximatif.
    et ca le sera totalement avec les changement que le DBA a prévu mais il veut pas comprendre ce que je lui dis
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    Citation Envoyé par SQLpro
    Cela découle de mon puzzle : Problème n° 10 - symétrie négative
    dans http://sqlpro.developpez.com/SQL_AZ_P.html


    pas mal ce systeme de problemes
    mais on peut avoir la reponse si on t'écris?
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Oui, c'est fait pour ça !!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [MySQL] mysqldump pour une seule table
    Par francoisch dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/09/2013, 18h47
  2. [2.x] Plusieurs entités pour une seule table
    Par JackStrieger dans le forum Symfony
    Réponses: 7
    Dernier message: 03/09/2013, 22h24
  3. [AC-2003] Jointure sur une seule table
    Par DonKnacki dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 08/02/2011, 15h06
  4. Regroupement et jointure sur une seule table
    Par vinamis dans le forum Développement
    Réponses: 6
    Dernier message: 24/09/2009, 14h53
  5. requête casse-tête pour une seule table..
    Par MikeV dans le forum Requêtes
    Réponses: 9
    Dernier message: 23/08/2007, 21h02

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