Resultat retourné par count = 0 alors que c'est faux mysql
Résolu/Fermé
sissiegozz
Messages postés
5
Date d'inscription
lundi 8 octobre 2012
Statut
Membre
Dernière intervention
8 novembre 2012
-
Modifié par sissiegozz le 7/11/2012 à 14:24
sissiegozz Messages postés 5 Date d'inscription lundi 8 octobre 2012 Statut Membre Dernière intervention 8 novembre 2012 - 8 nov. 2012 à 11:54
sissiegozz Messages postés 5 Date d'inscription lundi 8 octobre 2012 Statut Membre Dernière intervention 8 novembre 2012 - 8 nov. 2012 à 11:54
A voir également:
- Resultat retourné par count = 0 alors que c'est faux mysql
- Ecran retourne - Guide
- Lexer resultat - Télécharger - Sport
- Excel si inférieur à 0 alors 0 ✓ - Forum Excel
- Qualité de signal parabole 0 - Forum TNT / Satellite / Réception
- Mysql community server - Télécharger - Bases de données
4 réponses
Utilisateur anonyme
7 nov. 2012 à 15:42
7 nov. 2012 à 15:42
Bonjour
1 - MySQL se trompe nettement moins souvent que les programmeurs. Le résultat est correct, et si ce n'est pas ce que tu attends, c'est dans la question qu'il y a une erreur.
2 - On se demande à quoi sert ton SELECT interne
3 - tu es sûr que c'est bien 1 minute que tu voulais ajouter ? Pas un jour, par hasard ?
1 - MySQL se trompe nettement moins souvent que les programmeurs. Le résultat est correct, et si ce n'est pas ce que tu attends, c'est dans la question qu'il y a une erreur.
2 - On se demande à quoi sert ton SELECT interne
3 - tu es sûr que c'est bien 1 minute que tu voulais ajouter ? Pas un jour, par hasard ?
SELECT COUNT( * ) FROM temporaire WHERE dateReception = ADDTIME( '2012/03/14 00:00:00', '24:00:00' )
sissiegozz
Messages postés
5
Date d'inscription
lundi 8 octobre 2012
Statut
Membre
Dernière intervention
8 novembre 2012
Modifié par sissiegozz le 8/11/2012 à 06:21
Modifié par sissiegozz le 8/11/2012 à 06:21
Bonjour, merci de vos réponses et oui, c'est 1 minute que je veux bien ajouter!
Dans ma table 'temporaire', il y plusieurs enregistrements pour la date 2012/03/14 00:00:00 et 2012/03/14 00:01:00 et ainsi de suite!
Je voudrais compter le nombre d'entrée ayant pour date 2012/03/14 00:01:00.
Je sais que je dois procéder comme suit:
SELECT COUNT( * )
FROM temporaire
WHERE dateReception = ('2012/03/14 00:01:00') , et cette requête me renvoie bien le résultat attendu.
Seulement je dois faire la requête suivante:
SELECT COUNT(*) FROM temporaire WHERE dateReception = (SELECT ADDTIME(SELECT dateReception FROM temporaire WHERE id LIKE '%0000000000' , '00:01:00'))
Le problème c'est qu'il me renvoie un count = 0
Donc, si j'ai la solution de: SELECT COUNT( * )
FROM temporaire
WHERE dateReception = (
SELECT ADDTIME( '2012/03/14 00:00:00', '00:01:00' ) ) [le sujet de cette discussion]
je réussirai probablement à résoudre mon problème!
Merci!
Dans ma table 'temporaire', il y plusieurs enregistrements pour la date 2012/03/14 00:00:00 et 2012/03/14 00:01:00 et ainsi de suite!
Je voudrais compter le nombre d'entrée ayant pour date 2012/03/14 00:01:00.
Je sais que je dois procéder comme suit:
SELECT COUNT( * )
FROM temporaire
WHERE dateReception = ('2012/03/14 00:01:00') , et cette requête me renvoie bien le résultat attendu.
Seulement je dois faire la requête suivante:
SELECT COUNT(*) FROM temporaire WHERE dateReception = (SELECT ADDTIME(SELECT dateReception FROM temporaire WHERE id LIKE '%0000000000' , '00:01:00'))
Le problème c'est qu'il me renvoie un count = 0
Donc, si j'ai la solution de: SELECT COUNT( * )
FROM temporaire
WHERE dateReception = (
SELECT ADDTIME( '2012/03/14 00:00:00', '00:01:00' ) ) [le sujet de cette discussion]
je réussirai probablement à résoudre mon problème!
Merci!
Utilisateur anonyme
8 nov. 2012 à 09:07
8 nov. 2012 à 09:07
1 - La requête telle que tu la posais dans ta première question fonctionne très bien. J'ai créé une table et je l'ai essayée pour le cas où une erreur m'aurait échappé. Il n'y a pas de problème à ce niveau-là
2 - Comme je te l'ai déjà dit, tu as un niveau de sous-requête inutile. Je ne vois pas la différence (j'ai peut-être tort, je ne suis pas spécialiste mysql) entre
3 - Maintenant que tu as donné ta vraie requête, je vois deux problèmes :
- la sous-requête à l'intérieur du ADDTIME (qui n'apparaissait pas avant) devrait être entourée de parenthèses
- Tu vas avoir une erreur si cette sous-requête sort plus d'une ligne de résultat.
Si tu es sûr qu'il y a un id et un seul qui est LIKE '%0000000000', tu peux faire
:
Mais il vaut sûrement mieux utiliser une jointure :
2 - Comme je te l'ai déjà dit, tu as un niveau de sous-requête inutile. Je ne vois pas la différence (j'ai peut-être tort, je ne suis pas spécialiste mysql) entre
SELECT COUNT( * ) FROM temporaire WHERE dateReception = ( SELECT ADDTIME( '2012/03/14 00:00:00', '00:01:00' ) ) et SELECT COUNT( * ) FROM temporaire WHERE dateReception = ADDTIME( '2012/03/14 00:00:00', '00:01:00' )
3 - Maintenant que tu as donné ta vraie requête, je vois deux problèmes :
- la sous-requête à l'intérieur du ADDTIME (qui n'apparaissait pas avant) devrait être entourée de parenthèses
- Tu vas avoir une erreur si cette sous-requête sort plus d'une ligne de résultat.
Si tu es sûr qu'il y a un id et un seul qui est LIKE '%0000000000', tu peux faire
:
SELECT COUNT(*) FROM temporaire WHERE dateReception = ADDTIME((SELECT dateReception FROM temporaire WHERE id LIKE '%0000000000') , '00:01:00')
Mais il vaut sûrement mieux utiliser une jointure :
SELECT COUNT(*) FROM temporaire t1 INNER JOIN temporaire t2 ON ADDTIME(t1.dateReception,'00:01:00') = t2.dateReception AND t1.id LIKE '%0000000000'
sissiegozz
Messages postés
5
Date d'inscription
lundi 8 octobre 2012
Statut
Membre
Dernière intervention
8 novembre 2012
8 nov. 2012 à 11:54
8 nov. 2012 à 11:54
Merci beaucoup pour tes réponses!
Tu as raison, la première requête doit marcher, et elle marche bien maintenant! Un resultat count=0 a été renvoyé parce que je n'ai pas utiliser le type datetime pour mon champ dateReception. C'est mon erreur!
Concernant ma vraie requete, j'ai eu des erreurs de syntaxe. Merci pour les codes SQL que tu m'as filé, elles marchent super bien!
Merci surtout pour l'idée de la jointure, c'est super!
Merci pour ton aide, je vais pouvoir avancer maintenant!
Tu as raison, la première requête doit marcher, et elle marche bien maintenant! Un resultat count=0 a été renvoyé parce que je n'ai pas utiliser le type datetime pour mon champ dateReception. C'est mon erreur!
Concernant ma vraie requete, j'ai eu des erreurs de syntaxe. Merci pour les codes SQL que tu m'as filé, elles marchent super bien!
Merci surtout pour l'idée de la jointure, c'est super!
Merci pour ton aide, je vais pouvoir avancer maintenant!
7 nov. 2012 à 17:53
Si tu veux plus de détails, donne nous un exemple de données qui devraient, d'après toi, être comptées par ta requête.
Xavier