ACCESS > select count group by + jointure

Résolu/Fermé
xdiz Messages postés 108 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 19 décembre 2012 - 8 août 2008 à 01:03
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 - 11 août 2008 à 17:04
Bonjour,
A l'aide de ce post http://www.commentcamarche.net/forum/affich 5138406 sql select count distinct group by access
dont je me suis aidé, j'ai reussi à faire ma requête cependant il faudrait une jointure en plus ....


SELECT Count(dev_perso.id_perso) AS id_perso_monde, dev_perso.region
FROM (select distinct * from dev_perso)
WHERE dev_perso.region <> 'monde'
GROUP BY dev_perso.region

id_perso_monde	   region
2	           Montpellier
1	           Nancy-Metz
1	           Paris

id_perso est la clef primaire de la table dev_perso et la clef étrangère (sans integrité referencielle) de la table dev_devis
Je cherche à compter le nombre de personne en fonction des regions sur une periode donnée (date_creation). Cet attribut est dans une autre table : dev_devis. J'ai essayé de faire ceci (jointure + condition), mais sa me donne des resultats foireux !
SELECT Count(dev_perso.id_perso) AS id_perso_monde, dev_perso.region
FROM (select distinct * from dev_perso), dev_devis
WHERE dev_perso.region <> 'monde'
AND (dev_devis.date_creation) BETWEEN #01/01/2008# And #31/12/2008#
GROUP BY dev_perso.region


Je fais trop compliquer ? Y'a-t-il plus simple, je galère depuis 1j, je n'y vois plus clair :/

Merci d'avoir lu ;)

26 réponses

xdiz Messages postés 108 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 19 décembre 2012 41
11 août 2008 à 08:41
Bonjour,

Normal que tu ne sois pas là c'était le we ^^

Euh non, je vais essayer autre chose... je te tiens au courant ;)
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
11 août 2008 à 08:42
Ok d'accord.

N'hésite pas à me faire part de l'avancer de ton problème ;)
0
xdiz Messages postés 108 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 19 décembre 2012 41
11 août 2008 à 09:03
Je travail sous PHP/ACCESS, voici un exemple :

$req1 = "SELECT DISTINCT dev_devis.id_perso FROM dev_devis;";

$query_perso_academie = " SELECT dev_perso.region, Count($req1.id_perso) AS Compte_id_perso
FROM dev_perso INNER JOIN $req1 ON dev_perso.id_perso = $req1.id_perso
GROUP BY dev_perso.region; ";

$result_perso_academie = odbc_exec($cnx, $query_perso_academie);
echo $query_perso_academie."<br />"; // permet de verifier si y'a une erreur de synthaxe ;)

Sous access tes 2 requetes marchent, mais pas en executant ce mini script :/ relou relou relou
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
11 août 2008 à 09:09
La requête 1 marche quand même? Essaie la seule.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xdiz Messages postés 108 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 19 décembre 2012 41
11 août 2008 à 09:13
Oui elle marche ... sous access les 2 requetes marchent mais pas en les executant a partir d'un script php :/
0
CaPiT Messages postés 609 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 21 avril 2010 51
11 août 2008 à 09:21
Ouai je comprends ça.

Si la requête 1 ne fonctionne pas du tout, c'est que ton code qui execute les requêtes ne fonctionne pas.

Mais si la requête 1 marche et pas la requête 2 en php, c'est qu'il y a un soucis d'interprétation de la requête 2 et là ça pose problème ^^
0
xdiz Messages postés 108 Date d'inscription jeudi 3 janvier 2008 Statut Membre Dernière intervention 19 décembre 2012 41
11 août 2008 à 09:32
Exact car la requête 2 n'arrive pas a executer la req1 dans la 2eme ;)

Voici l'erreur:
Erreur de syntaxe dans la clause FROM
Et la requête 2 générée:
SELECT dev_perso.region, Count(SELECT DISTINCT dev_devis.id_perso FROM dev_devis.id_perso) AS nbr_perso_academie FROM dev_perso INNER JOIN SELECT DISTINCT dev_devis.id_perso FROM dev_devis ON dev_perso.id_perso = SELECT DISTINCT dev_devis.id_perso FROM dev_devis.id_perso GROUP BY dev_perso.region;
0