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 :

Rassembler plusieurs tables dans une DBGrid


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut Rassembler plusieurs tables dans une DBGrid
    Bonjour

    je voudrais rassembler plusieurs tables dans une DBGrid à l'aide d'une ADOQuery.

    donc j'ai 2 tables:

    Table1: GPS

    Champ1:Time
    Champ2:Speed

    Table2: EngineP

    Champ1:Time
    Champ2:Consumption
    Champ3:LoadFactor

    Je voudrais récupérer par l'ADOQuery tous les champs (5) des deux tables avec comme condition que Time soit identique.
    Est ce possible et comment?

    Merci beaucoup

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    je pense à ça mais faudrait vérifier :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select * From taTable1, taTable2
    where Table1.Time = Table2.Champ.Time

    Bonne chance.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  3. #3
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut
    Parfait si j'avais su que c'était aussi simple

    Merci beaucoup

  4. #4
    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

    Cette forme-ci est plus dans la norme SQL.

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT 
      G.TIME, G.SPEED, E.CONSUMPTION, E.LOADFACTOR
    FROM
      GPS AS G INNER JOIN ENGINEP AS E
      ON G.TIME = E.TIME
    ORDER BY
      G.TIME;

    @+

  5. #5
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut
    Et si maintenant je veux vérifier en plus qu'un champ supplémentaire de chaque table doit avoir une valeur choisie?

    Table1 GPS

    champs3:NumTest

    Table2 EngineP

    Champs4:NumTest

  6. #6
    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
    Modifie la jointure ainsi:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FROM
      GPS AS G INNER JOIN ENGINEP AS E
      ON G.TIME = E.TIME and G.NUMTEST = E.NUMTEST

    @+

  7. #7
    Membre éprouvé Avatar de Yurck
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 14
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2005
    Messages : 682
    Points : 912
    Points
    912
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
       SELECT G.TIME, G.SPEED, E.CONSUMPTION, E.LOADFACTOR
          FROM GPS AS G 
    LEFT JOIN ENGINEP AS E ON G.TIME = E.TIME AND G.NUMTEST = E.NUMTEST
      /*  WHERE ???? */
     ORDER BY G.TIME
    Avec une jointure gauche tu t'exposes moins au risque de ne pas certains enregistrements.
    Surtout sur une jointure par un champ heure.
    Dans le vocabulaire des couturiers seulement, patron est synonyme de modèle.
    Aymond d'Alost

  8. #8
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut
    Génial un petit dernier dites le si je suis trop lourd lol

    Passons a 3 tables...

    Table1 GPS

    Champs: Time,Speed,NumTest

    Table2 EngineP

    Champs: Time,Speed,NumTest

    Table3 EngineS

    Champs: Time,Speed,NumTest

    Basé sur le même résonnement, c'est a dire reprendre les enregistrements possédant le même Time (basé sur GPS) et possédant un NumTest choisi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT GPS.Time,GPS.Speed,EngineP.Speed,EngineS.Speed 
    FROM GPS INNER JOIN EngineP 
    ON GPS.Time=EngineP.Time 
    AND GPS.NumTest=EngineP.NumTest=x
    Ceci devrais fonctionner pour 2 tables mais je dois faire une erreur

    Ensuite pour 3 tables c'est encore plus dure ...

  9. #9
    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
    Ooops, c'est quoi ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GPS.NumTest=EngineP.NumTest=x
    Tu veux limiter les enregistrements au Test n° X ?

  10. #10
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut
    Yes mais je suis con la condition GPS.NumTest=x me suffit étant donné que j'ai déjà la condition GPS.Time=EngineP.Time.

    Je remplace x par la valeur dont j'ai besoin bien entendu.

    Maintenant avec 3 tables je ne vois pas comment faire

  11. #11
    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
    Citation Envoyé par cbegood Voir le message
    la condition GPS.NumTest=x me suffit
    Oui à spécifier dans la clause WHERE.

    [edit]
    A tenir compte aussi de la remarque de Yurk, si tu ne veux pas te limiter au enregistrements communs des 2 tables.
    @+

  12. #12
    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
    Citation Envoyé par cbegood Voir le message
    Maintenant avec 3 tables je ne vois pas comment faire
    Je t'invite à lire ces articles et tutos sur SQL, ici.

    Bonne lecture.

  13. #13
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    si tu ne veux pas te limiter au enregistrements communs des 2 tables.
    @+
    Ca veux dire que si j'ai un enregistrement double il ne l'affichera qu'une fois?
    Si j'ai deux enregistrement pour un même EngineP.Time je n'aurai qu'une ligne?
    Si c'est cela ce n'est pas un souci.

    Pour la méthode pour 3 tables une idée??

  14. #14
    Membre du Club
    Inscrit en
    Août 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 117
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    Je t'invite à lire ces articles et tutos sur SQL, ici.

    Bonne lecture.
    Oki merci beaucoup déjà pour toute cette aide précieuse.

  15. #15
    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
    Cet article devrait t'intéresser: LE SQL de A à Z : 3e partie - les jointures

    Ce n'est pas très compliqué. Bonne lecture.

    @+

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

Discussions similaires

  1. delphi: intégration 2 table dans une DBgrid
    Par bsamine dans le forum Composants VCL
    Réponses: 3
    Dernier message: 08/10/2009, 11h13
  2. Réponses: 5
    Dernier message: 12/02/2009, 09h59
  3. Groupement de plusieurs tables dans une seule
    Par kemiolek dans le forum VBA Access
    Réponses: 2
    Dernier message: 06/06/2008, 17h27
  4. Copie de colonnes de plusieures tables dans une autre table
    Par PPLILH2008 dans le forum Modélisation
    Réponses: 3
    Dernier message: 04/06/2008, 15h09
  5. plusieurs tables dans une seule table
    Par scully2501 dans le forum Access
    Réponses: 1
    Dernier message: 10/10/2005, 09h19

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