Requete : COUNT, WHERE, GROUP_BY

Résolu/Fermé
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 - 14 août 2016 à 12:07
Exileur Messages postés 1475 Date d'inscription mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 - 14 août 2016 à 16:09
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 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234
14 août 2016 à 13:16
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 39632 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 24 avril 2024 9 234
Modifié par jee pee le 14/08/2016 à 13:35
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 mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
14 août 2016 à 16:08
J'ai tester directement dans phpmyadmin, le champ type posait probléme.
0
Malekal_morte- Messages postés 180304 Date d'inscription mercredi 17 mai 2006 Statut Modérateur, Contributeur sécurité Dernière intervention 15 décembre 2020 24 628
14 août 2016 à 13:34
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
14 août 2016 à 14:22
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 mercredi 31 août 2011 Statut Membre Dernière intervention 16 décembre 2022 150
Modifié par Exileur le 14/08/2016 à 16:13
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