Requete : COUNT, WHERE, GROUP_BY

Résolu
Exileur Messages postés 1621 Statut Membre -  
Exileur Messages postés 1621 Statut Membre -
Bonjour à tous,

Je dois bien avouer que je sèche :

J'ai une table construite comme ça :

candidatures_tracker -----------------------------------------------------------------------------------------------------------------------------------
| id | id_candidature | nom | type | statut | date
---------------------------------------------------------------- | ------- | ------- | -------| ----------------------------
| 0 | 3a769fbe187467e0cb67afcb522e4442 | test | 1 | 0 | 2016-08-11 09:23:01|
---------------------------------------------------------------- | ------- | ------- | -------| ----------------------------
| 1 | 3a769fbe187467e0cb67afcb522e4442 | test | 2 | 0 | 2016-08-12 14:03:01 |
---------------------------------------------------------------- | ------- | ------- | -------| ----------------------------
| 2 | 3a769fbe187467e0cb67afcb522e4442 | test | 2 | 0 | 2016-08-13 16:03:01 |
---------------------------------------------------------------- | ------- | ------- | -------| ----------------------------
| 3 | 3a769fbe187467e0cb67afcb522e4442 | test | 2 | 1 | 2016-08-14 08:03:01 |
---------------------------------------------------------------- | ------- | ------- | -------| ----------------------------
| 4 | 4fd984f98d7467e0cb67afcb522e4442 | test1 | 1 | 0 | 2016-08-14 08:03:01
---------------------------------------------------------------- | ------- | ------- | -------| ----------------------------
| 5 | 4fd984f98d7467e0cb67afcb522e4442 | test1 | 2 | 1 | 2016-08-14 08:03:01
---------------------------------------------------------------- | ------- | ------- | -------| ----------------------------
| 6 | 4fd984f98d7467e0cb67afcb522e4442 | test1 | 1 | 0 | 2016-08-14 08:03:01

id_candidature et l'id dans une autre table.
nom est le nom dans l'autre table.
type est 0 ou 1 pour cv, ldm.
statut permet de savoir si la notification a été lu.

Je souhaite récupérer les notification non lu, les grouper par candidatures ET type.

Total non lu : 5
___________________________
|nom | type | Nombre |
|------------------------------------
|Test | 1 | 1 |
|------------------------------------
|Test | 2 | 2 |
|------------------------------------
|Test1 | 1 | 2 |
|------------------------------------

Le problème est que la requête que j'utilise me retourne un tableau vide....

$resultats=$bdd->query("SELECT nom, type,COUNT(*) FROM candidatures_tracker WHERE statut = 0 GROUP BY nom, type");
$resultats->FetchAll;
print($resultat);


Donc je viens à vous pour savoir comment formuler la requête pour obtenir le résultat voulu.
Merci à vous






3 réponses

jee pee Messages postés 42386 Statut Modérateur 9 739
 
Bonjour,

Même si je ne pratique pas mysql, la syntaxe me semble correcte.

Pour vérifier le mieux c'est d’exécuter la requête dans sqladmin directement, pour voir si le problème vient du select lui même, ou de son traitement, ou syntaxe, dans php.

cdlt
1
jee pee Messages postés 42386 Statut Modérateur 9 739
 
si pb php c'est peut être qu'il faille un alias au count(*) :
SELECT nom, type, COUNT(*) as total FROM candidatures_tracker
0
Exileur Messages postés 1621 Statut Membre 150
 
J'ai tester directement dans phpmyadmin, le champ type posait probléme.
0
Malekal_morte- Messages postés 184347 Statut Modérateur, Contributeur sécurité 24 688
 
Salut,

(je ne vais pas répondre à la question mais je voulais te féliciter sur la manière dont tu as posé la question, c'est très clair...
Ca change des sujets avec 3 mots)
1
Utilisateur anonyme
 
Bonjour

La requête a l'air correcte et l'alias sur COUNT n'est absolument pas obligatoire.
Par contre, ton php pour afficher le résultat est complètement faux, c'est étonnant que tu n'aies pas de message d'erreur. C'est probablement que l'affichage des erreurs est masqué.

$resultats->FetchAll;
est incorrect. Il faut des parenthèses pour appeler une fonction :
$resultats->FetchAll();
.
De plus, si tu veux utiliser le résultat de cet appel, il faut l'affecter à une variable : c'est donc
$resultat = $resultats->FetchAll();
.
Enfin, le $resultat obtenu étant un array, avec
print ($resultat);
tu vas simplement afficher le mot "Array". Il faut faire une boucle pour imprimer chaque ligne du résultat, ou utiliser print_r ou var_dump.
1
Exileur Messages postés 1621 Statut Membre 150
 
Merci de ta réponse, après avoir changer le nom du champ type et effectué, j'ai suivi tes instructions. Voila la requête :


$resultats=$bdd->query("SELECT nom, type32,COUNT(*) FROM candidatures_tracker WHERE statut = 0 GROUP BY nom, type32");
$resultat = $resultats->FetchAll();
print_r($resultat);


Merci de vos réponses :)

ps: j'avais pas d'erreurs car en plus du print, j'avais :
$resultats->FetchAll();

print ($resultat);

Sans S sur le print.

Sinon les erreurs sont bien activées :)
0