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 :

filtre dans deux table


Sujet :

Bases de données Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut filtre dans deux table
    Salut
    jais deux table agent et table agent contractuel
    agent(num_agent,nom,prenom,service)
    agent_contractuel(num_agent_cont,nom,prenom,service)
    est ce qu'il possible d'afficher une liste par service appartire de ces deux table
    jais essai avec cette requette mais ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    with ibquery1 do
    begin
    close;
    sql.clear;
    sql.add('select * from agent,agent_contractuel where agent.service=:ss1 and agent_contractuel.service=:ss2')
    parambyname('ss1').asstring:=monservice;
    parambyname('ss2').asstring:=monservice;
    open;
    end;
    oui normalement je utilise une seul table en r'ajoute un champ type_agent et en evite tout les probleme , mais est ce qu'il est possible avec ces deux table ?
    merci d'avance.

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par kroma23 Voir le message
    oui normalement je utilise une seul table en r'ajoute un champ type_agent et en evite tout les probleme , mais est ce qu'il est possible avec ces deux table ?
    merci d'avance.
    Bonjour Kroma,

    Essai de te relire la prochaine fois...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    with ibquery1 do
    begin
     Try
       sql.clear;
       sql.add('select * from agent A,agent_contractuel AC ');
       sql.add('where A.numagent = AC.numagent ');
       Sql.Add('And A.service=:ss1 and AC.service=:ss2');
       parambyname('ss1').asstring:=monservice;
       parambyname('ss2').asstring:=monservice;
       open;
     Finally
       close;
     end;
    end;
    @Bye
    end;

  3. #3
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Pi moi alors, je t'écrit de ces con***

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    with ibquery1 do
    begin
     Try
       sql.clear;
       sql.add('select Nom, Prenom, Service from agent A ');
       sql.add('where A.service=:ss1 ');
       sql.add('UNION ');
       sql.add('select Nom, Prenom, Service from agent_contractuel AC ');
       sql.add('where AC.service=:ss2');
       parambyname('ss1').asstring:=monservice;
       parambyname('ss2').asstring:=monservice;
       open;
     Finally
       close;
     end;
    end;
    Cela fonctionnera mieux ainsi...*

    @Bye

  4. #4
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,

    Donnez un exemple avec un jeu d'essai et le résultat attendu, cela aidera à mieux comprendre et à rendre la réponse plus pertinente !

    Ensuite, il s'agit de réaliser l'union de 2 jeux de résultats. Il faut construire 2 requêtes avec un union.
    Cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    with ibquery1 do
    begin
      close;
      sql.clear;
      sql.add('select * from agent where service = :ss1 ' +
              'union ' +
              'select * from agent_contractuel where service = :ss2');
      parambyname('ss1').asstring:=monservice;
      parambyname('ss2').asstring:=monservice;
      open;
    end;
    Dans votre cas, les 2 tables ont même structure, le * dans les requêtes est possible, sinon il aurait fallu nommer toutes les colonnes et s'assurer qu'elles sont du même type dans les 2 select.
    De manière générale, évitez les * (sauf en phase de conception et de test) et restreignez la requête aux colonnes des tables dont vous avez réellement besoin (le moteur de bases de données sera plus rapide, le volume de données manipulé plus faible, le tout plus efficace).
    --
    Philippe.
    Philippe.

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut PH.B.

    Je vois pas la différence avec mon précédent TOPIC


    [EDIT]
    Et généralement on évite le * avec la clause UNION ? non ?

    A+

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour Buzz !
    Citation Envoyé par BuzzLeclaire Voir le message
    Salut PH.B.
    Je vois pas la différence avec mon précédent TOPIC
    A+
    Effectivement, mais je m'adressais à Kroma et c'est après avoir publié ma réponse que j'ai vu que tu m'avais précédé...

    Citation Envoyé par BuzzLeclaire Voir le message
    Et généralement on évite le * avec la clause UNION ? non ?
    On est bien d'accord, à éviter autant que possible comme je l'ai indiqué...

    On va dire qu'il faut répéter les choses plusieurs fois pour qu'elles soient comprises !
    --
    Philippe.
    Philippe.

  7. #7
    Membre actif
    Inscrit en
    Décembre 2004
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 390
    Points : 288
    Points
    288
    Par défaut
    Moi, je dirai qu'une table suffit !
    Il faut juste ajouter un champs pour différencier les agents et le tour est joué !

    Avec une seule table, la requête SQL sera trés simple, aucune jointure !

Discussions similaires

  1. [MySQL] Sélectionner deux champs du meme nom dans deux tables
    Par Msieurduss dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 14/06/2006, 22h54
  2. Nombre de lignes dans deux tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 3
    Dernier message: 31/05/2006, 12h24
  3. Lier deux champs dans deux tables ?
    Par Olivierc dans le forum Access
    Réponses: 3
    Dernier message: 28/04/2006, 23h13
  4. Effacer des entrées dans deux tables
    Par stormz dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/01/2006, 12h28
  5. Ajouter dans deux tables
    Par mikedimoi dans le forum Débuter
    Réponses: 4
    Dernier message: 11/01/2006, 20h49

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