Aller au contenu

mysql: count () ne m'affiche pas tous les enregis


Sujets conseillés

Posté

Bonjour,

je suis entrain de réaliser un programme qui gère des SMS; j'ai effectué une requête en mysql pour afficher les SMS envoyés à l'etranger, classés par destination. La requête que je lance m'affiche seulement les pays vers lesquels il y a eu des envois et n'affiche pas les autres. J'utilise pour cela l'agrégat count() mais il me supprime les lignes où le count() a renvoyé 0, ou plutôt il supprime les lignes de la table de gauche

qui n'ont pas de correspondance dans la table de droite (et dont le count est 0).

je voudrais afficher tous les indicatifs, y compris ceux où le count=0.

voici la structure de la première table:

CREATE TABLE `destinations` (

  `Indicatif` varchar(10) NOT NULL default '',

  `Destination` varchar(50) default '',

  PRIMARY KEY  (`Indicatif`),

  KEY `destination` (`Destination`)

) TYPE=MyISAM;

et celle de la seconde table:

CREATE TABLE `crsms` (

  `DateHeure` datetime NOT NULL default '0000-00-00 00:00:00',

  `Expediteur` varchar(18) NOT NULL default '',

  `Destinataire` varchar(18) NOT NULL default '',

  `Type` tinyint(3) unsigned NOT NULL default '0',

  `IOModule` tinyint(3) unsigned NOT NULL default '0',

  `AModule` tinyint(3) unsigned NOT NULL default '0',

  `GSMCode` char(2) NOT NULL default '',

  `DStatus` tinyint(3) unsigned NOT NULL default '0',

  `Length` tinyint(3) unsigned NOT NULL default '0',

  `IndicatifExp` varchar(10) default '[NULL]',

  `IndicatifDest` varchar(10) default '[NULL]',

  `RService` char(3) NOT NULL default '',

  `SMSCCode` tinyint(3) unsigned default NULL,

  UNIQUE KEY `indexPrincipal` (`DateHeure`,`Expediteur`,`Destinataire`,`Type`),

  KEY `indexExp` (`Expediteur`),

  KEY `indexDest` (`Destinataire`),

  KEY `IndicatifExp` (`IndicatifExp`),

  KEY `indexdatetime` (`DateHeure`),

  KEY `IndicatifDest` (`IndicatifDest`)

) TYPE=MyISAM;

voici enfin le code de la requête:

SELECT indicatif,destination,count(indicatif)

FROM `destinations` left outer join crsms on indicatif=indicatifdest

where dateheure between '2003-09-01' and '2003-09-02'

group by indicatif

Quelqu'un peut-il m'aider?

Merci

Posté

il ne peut pas faire en meme temps

SELECT indicatif et count(indicatif)

Tu lui demandes de lui donner 'tous les indicatifs' et le 'nombre d'indicatifs'.

Ce n'est pas possible.

Essaies :

SELECT indicatif,count(*) ...... group by indicatif.

ca devrait marcher ... mieux.

A+.

Posté (modifié)

et le AS ????

tout le monde l'oubli celui la ;)

SELECT indicatif, destination, count(indicatif) AS compteur

FROM `destinations` left outer join crsms on indicatif=indicatifdest

where dateheure between '2003-09-01' and '2003-09-02'

group by indicatif

Modifié par Ldo
Posté

Merci les amis, mais je n'ai toujours pas les indicatifs dans lesquels count = 0.

Posté (modifié)

tu fait comment pour le voir ?

donne peu ton code censé affiché les resultats

dans la base, chaque indicatif est different ?

et avec :

SELECT t1.indicatif, t1.destination, count(t1.indicatif) AS compteur
FROM destinations AS t1, crsms AS t2 WHERE t1.indicatif = t2.indicatifdest AND dateheure between '2003-09-01' and '2003-09-02' group by indicatif

Modifié par Ldo
Posté

Essaie un truc comme ca, ca marche chez moi ;)

SELECT indicatif, count(indicatifdest) AS compteur

FROM `destinations` left join crsms on indicatif=indicatifdest

group by indicatif

Anonymus.

Posté

Pour construire mes requetes Mysql un tant soit peu complexe j'utilise:

Navicat

C'est un bon soft qui permet de construire visuellement ses requetes.. Bon ca bug parfois! Mais avec un peu d'entrainement on y arrive. :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...