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

C++Builder Discussion :

Requetes 2 tables, count, as,group by


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut Requetes 2 tables, count, as,group by
    Bonjour,

    dans mon application j'essaie de grouper et d'afficher des statistiques sur les mouvements du personnel en appliquant une requete sur 2 tables de la façon suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ADOConnection1->Open();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("select m.EntiteOrigine as Entité,(count(m.Matricule)+count(p.Matricule)) as [Désirants Entrer]");
    ADOQuery1->SQL->Add("from Mutations m, Permutations p");
    ADOQuery1->SQL->Add("where D_Etablis like"+Edit1->Text+" group by m.EntiteOrigine");
     
    ADOQuery1->Prepared=true;
    ADOQuery1->Open();
    ADOQuery1->Close();
    ADOConnection1->Close();
    une erreur m'indique qu'il y a faute de syntaxe dans la clause FROM.

    j'ai donc essayé en utilisant les noms complet des tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ADOConnection1->Open();
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("select Mutations.EntiteOrigine as Entité,(count(Mutations.Matricule)+count(Permutations.Matricule)) as [Désirants Entrer]");
    ADOQuery1->SQL->Add("from Mutations,Permutations");
    ADOQuery1->SQL->Add("where D_Etablis like"+Edit1->Text+" group by Mutations.EntiteOrigine");
     
    ADOQuery1->Prepared=true;
    ADOQuery1->Open();
    ADOQuery1->Close();
    ADOConnection1->Close();
    La meme erreur s'affiche.
    quelqu'un voit-il où est l'erreur? et comment m'en debarasser?

    Merci

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Est-ce que comme ça ca fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ADOQuery1->SQL->Add("select m.EntiteOrigine as Entite," );
    ADOQuery1->SQL->Add("(count(m.Matricule)+count(p.Matricule)) as Desirants_Entrer" );
    ADOQuery1->SQL->Add("from Mutations m, Permutations p");
    ADOQuery1->SQL->Add("where D_Etablis like " + QuotedStr(Edit1->Text) );
    ADOQuery1->SQL->Add("group by m.EntiteOrigine" );

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello,

    Cette ligne me parait douteuse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOQuery1->SQL->Add("where D_Etablis like"+Edit1->Text+" group by Mutations.EntiteOrigine");
    Essaye plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOQuery1->SQL->Add("where D_Etablis like '"+Edit1->Text+"' group by Mutations.EntiteOrigine");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ADOQuery1->SQL->Add("where D_Etablis like \""+Edit1->Text+"\" group by Mutations.EntiteOrigine");
    Après, quelques questions:
    - Tu as préfixé les noms de tous tes champs, sauf pour D_Etablis. Dans quelle table se trouve-t'il ?
    - Tu as 2 tables dans ta requête, mais aucune jointure entre les 2. Est-ce normal ?
    - As-tu essayé ta requête directement dans Access (c'est bien Access que tu utilises, non ?) ?

    Un truc que tu peux faire: mettre un TMemo sur ta fiche, et le remplir avec le code de ta requête, genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monMemo->Lines->Text = ADOQuery1->SQL->Text;
    Ensuite tu copie-colles le contenu de ton Memo dans Access, et tu y exécutes la requête...

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut
    d'abord merci pour vos propositions
    puis comment cette requete peut ellemarcher dans access alors qu'elle inclut une variable(le text du TEdit)?
    puis supposant que ça marche s'il on remplace la variable par une valeur donnée.... y a t il un moyen pour importer la requete à partir d'Access pour la faire fonctionner sur c++ builder?
    j'espere que j'ai bien expliqué mon besoin

    Merci encore

  5. #5
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    Bsr,

    la requête qui sera dans le TMemo, sera le SQL généré donc normalement fonctionnel ds le SGBD cible.

    Et je suis d'accord sur le problème de l'absence de jointure...c'est étrange

    bye

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Par défaut
    j'ai essayé avec la jointure une un message d'erreur me signele que l'expression de jointure n'est pas supporter par le programme

    j'ai pensé à faire la jointure dans access et travailler sur la table resultante

    une meilleure idée??

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Citation Envoyé par nezhaaem Voir le message
    j'ai essayé avec la jointure une un message d'erreur me signele que l'expression de jointure n'est pas supporter par le programme

    j'ai pensé à faire la jointure dans access et travailler sur la table resultante

    une meilleure idée??
    Là je ne comprends pas tout....
    Est-ce que tu peux poster le code de la requête SQL correspondante ??
    j'ai pensé à faire la jointure dans access et travailler sur la table resultante
    Est-ce que tu peux préciser ??

    Déjà, est-ce que tu peux faire fonctionner ta requête dans Access ?? (quelle version d'Access, d'ailleurs ??)

Discussions similaires

  1. requete select avec count et group by
    Par paco503 dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/05/2013, 17h42
  2. [mysql 5] requete avec count+ having + group by
    Par epeichette dans le forum Requêtes
    Réponses: 7
    Dernier message: 29/10/2008, 19h52
  3. Requete SQL : 2 tables + count
    Par vichenze dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/08/2007, 10h28
  4. [requete] Probleme de COUNT() et GROUP BY
    Par cadoudal56 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/12/2006, 19h23
  5. [SQL]Requete avec 2 count(*) sur la même table
    Par Sonny dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/11/2005, 16h41

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