tonguim Posté 29 Octobre 2003 Posté 29 Octobre 2003 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
Anonymus Posté 29 Octobre 2003 Posté 29 Octobre 2003 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+.
Guest Ldo Posté 30 Octobre 2003 Posté 30 Octobre 2003 (modifié) et le AS ???? tout le monde l'oubli celui la SELECT indicatif, destination, count(indicatif) AS compteurFROM `destinations` left outer join crsms on indicatif=indicatifdest where dateheure between '2003-09-01' and '2003-09-02' group by indicatif Modifié 30 Octobre 2003 par Ldo
tonguim Posté 30 Octobre 2003 Auteur Posté 30 Octobre 2003 Merci les amis, mais je n'ai toujours pas les indicatifs dans lesquels count = 0.
Guest Ldo Posté 30 Octobre 2003 Posté 30 Octobre 2003 (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 compteurFROM 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é 30 Octobre 2003 par Ldo
Anonymus Posté 30 Octobre 2003 Posté 30 Octobre 2003 Essaie un truc comme ca, ca marche chez moi SELECT indicatif, count(indicatifdest) AS compteurFROM `destinations` left join crsms on indicatif=indicatifdest group by indicatif Anonymus.
Dams Posté 30 Octobre 2003 Posté 30 Octobre 2003 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.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant