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

Bases de données Delphi Discussion :

Jointure de table


Sujet :

Bases de données Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut Jointure de table
    Bonjour,
    Est-ce qu'il est possible de faire une jointure d'une table par rapport à elle même avec des conditions
    exemple :



    Pour Obtenir ceci :



    C-A-D : relier chaque entrée et sortie pour la même date pour le même matricule

  2. #2
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    Une auto jointure avec condition sur la table stock par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT T1.ID,T1.MAT,T1.NOM,T1.PRENOM,T1.DATE,T1.HEURE,T1.TYPE_MVT,T2.ID,T2.MAT,T2.NOM,T2.PRENOM,T2.DATE,T2.HEURE,T2.TYPE_MVT FROM STOCK T1 INNER JOIN  STOCK T2 ON T1.ID=T2.ID WHERE T1.TYPE_MVT=T2.TYPE_MVT AND T1.DATE=T2.DATE AND T1.TYPE_MVT=T2.TYPE_MVT
    Enfin je pense que c'est ca ?
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Je verrais plus une jointure uniquement sur le Matricule et la Date:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
      T1.ID, T1.MAT, T1.NOM, T1.PRENOM, T1.DATE, T1.HEURE, T1.TYPE_MVT,
      T2.ID, T2.MAT, T2.NOM, T2.PRENOM, T2.DATE, T2.HEURE, T2.TYPE_MVT
    FROM
      STOCK T1 INNER JOIN STOCK T2
      ON T1.MAT = T2.MAT AND T1.DATE = T2.DATE;

    @+ Claudius

  4. #4
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    En complément de cette requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
      T1.ID, T1.MAT, T1.NOM, T1.PRENOM, T1.DATE, T1.HEURE, T1.TYPE_MVT,
      T2.ID, T2.MAT, T2.NOM, T2.PRENOM, T2.DATE, T2.HEURE, T2.TYPE_MVT
    FROM
      STOCK T1 INNER JOIN STOCK T2
      ON T1.MAT = T2.MAT AND T1.DATE = T2.DATE;
    je rajouterais bien quelque chose comme

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    surement SQLpro va tirer sur moi

    Citation Envoyé par Cl@udius Voir le message
    Salut

    Je verrais plus une jointure uniquement sur le Matricule et la Date:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT
       T1.MAT, T1.NOM, T1.PRENOM, T1.DATE,T1.ID, T1.HEURE, T1.TYPE_MVT,
      T2.ID,T2.HEURE, T2.TYPE_MVT
    FROM
      STOCK T1 INNER JOIN STOCK T2
      on T1.MAT = T2.MAT 
      and T1.DATE = T2.DATE 
      where T1.TYPE_MVT='Entry' and T2.TYPE_MVT='Exit';
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Bonjour
    j ai oublié de vous préciser une petite contrainte : il y a le cas où une personne effectue plusieurs entrées et sorties dans une même journée alors je me demande si c est faisable pour que chaque entrée lui correspond sa sortie

  7. #7
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    Mars 2006
    Messages
    1 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 496
    Points : 2 762
    Points
    2 762
    Billets dans le blog
    10
    Par défaut
    Tu peux éventuellement le faire en deux requêtes successives avec génération d'une table temporaire entre les deux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT DISTINCT d.ID, MIN(d1.ID) as Id1
    FROM "TABLE1.db" d, "TABLE1.db" d1
    WHERE  (d.TYPE_MVT = 'Entry') AND (d1.ID > d.ID)  
    AND (d1.MAT = d.MAT) AND (d1."DATE" = d."DATE")
    GROUP BY d.ID ORDER BY d.ID
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT d1.ID, d1.MAT, d1."DATE", d1.HEURE, d2.ID, d2.MAT, d2.HEURE
    FROM "TMP1.DB" D, "TABLE1.db" d1, "TABLE1.db" d2
    WHERE (d1.ID = D.ID)  AND (d2.ID = D.Id1)
    ORDER BY d1.ID, d1.MAT, d1."DATE", d1.HEURE, d2.ID, d2.MAT, d2.HEURE

  8. #8
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 48
    Points : 30
    Points
    30
    Par défaut
    Merci pour toutes les réponses
    je vais les essayer et je vous confirmerai le résultat

Discussions similaires

  1. Jointure de table avec Interbase
    Par ada_b dans le forum InterBase
    Réponses: 21
    Dernier message: 12/05/2010, 19h52
  2. Réponses: 7
    Dernier message: 10/02/2005, 00h13
  3. [FB1.5]Vue avec jointure sur tables ?
    Par Sitting Bull dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2004, 17h07
  4. jointure sur table et procedure stocké
    Par pram dans le forum SQL
    Réponses: 3
    Dernier message: 18/11/2004, 21h56
  5. requete(jointure 2 tables) qui marche pas
    Par DaxTaz dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/06/2004, 17h50

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