Requete : COUNT, WHERE, GROUP_BY

Résolu
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -  
Exileur Messages postés 1475 Date d'inscription   Statut Membre Dernière intervention   -
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 41494 Date d'inscription   Statut Modérateur Dernière intervention   9 709
 
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 41494 Date d'inscription   Statut Modérateur Dernière intervention   9 709
 
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 1475 Date d'inscription   Statut Membre Dernière intervention   150
 
J'ai tester directement dans phpmyadmin, le champ type posait probléme.
0
Malekal_morte- Messages postés 180304 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   24 685
 
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 1475 Date d'inscription   Statut Membre Dernière intervention   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