La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  PHP / MySQL
(Modérateurs: Shain, Jey, erwinol, Lilian, lauryv, ToToMaStEr)
  mySQL: count () ne m'affiche pas tous pas tous les résultats
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: mySQL: count () ne m'affiche pas tous pas tous les résultats  (Lu 478 fois)
mySQL: count () ne m'affiche pas tous pas tous les résultats
« sur: le 28-10-2003 a 18:42:13 »
tonguim
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 8




guym79 guimferg
Voir le Profil    WWW    E-Mail
Répondre avec citation

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).
Quelqu'un peut-il m'aider?

Merci

Rapporter au modérateur  

Ce dont le monde a le plus besoin, c'est d'hommes , non pas des hommes qu'on achète et qui se vendent, mais d'hommes profondément loyaux et intègres, des hommes qui ne craignent pas d'appeler le péché par son nom, des hommes dont la conscience soit aussi fidèle à son de

Re:mySQL: count () ne m'affiche pas tous pas tous les résultats
« Répondre #1 sur: le 28-10-2003 a 20:06:56 »
Trantsiss
Membre récent
*

Hors-Ligne

Messages: 36



Je suis un lama!

Voir le Profil    E-Mail
Répondre avec citation

J'ai rien compris à ce que tu racontes, serait-il possible d'avoir un exemple de la table de sms et la partie du code recherchant dans cette table stp ?

Rapporter au modérateur  
Re:mySQL: count () ne m'affiche pas tous pas tous les résultats
« Répondre #2 sur: le 29-10-2003 a 11:57:30 »
tonguim
Membre récent
*

Hors-Ligne

Sexe: Male
Messages: 8




guym79 guimferg
Voir le Profil    WWW    E-Mail
Répondre avec citation

voici la stucture de la première table:

Code:
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:

Code:
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;




et maintenant la requête:

Code:
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


merci

Rapporter au modérateur  

Ce dont le monde a le plus besoin, c'est d'hommes , non pas des hommes qu'on achète et qui se vendent, mais d'hommes profondément loyaux et intègres, des hommes qui ne craignent pas d'appeler le péché par son nom, des hommes dont la conscience soit aussi fidèle à son de
Re:mySQL: count () ne m'affiche pas tous pas tous les résultats
« Répondre #3 sur: le 29-10-2003 a 13:58:28 »
Trantsiss
Membre récent
*

Hors-Ligne

Messages: 36



Je suis un lama!

Voir le Profil    E-Mail
Répondre avec citation

Mmh perso je n'utilise pas trop le outter left join.

J'écrirais la requête comme ça :

SELECT indicatif,destination,count(indicatif) as nb_appel
FROM destinations,crsms where indicatif=indicatifdest and  (dateheure between '2003-09-01' and '2003-09-02')
group by indicatif

essaie de voir si ça marcha mieux

Rapporter au modérateur  
Re:mySQL: count () ne m'affiche pas tous pas tous les résultats
« Répondre #4 sur: le 30-10-2003 a 10:34:59 »
ytsamy
Membre récent
*

Hors-Ligne

Messages: 2



Je suis un lama!

Voir le Profil
Répondre avec citation

Normalement, le left join devrait faire l'affaire.
d'apres la doc, il devrait donner toutes les destinations, meme celles vers lesquelles il n'y a pas eu d'envoi (celles qui n'ont pas de correspondance dans la table CRSMS)

Rapporter au modérateur  
Re:mySQL: count () ne m'affiche pas tous pas tous les résultats
« Répondre #5 sur: le 30-10-2003 a 16:07:26 »
ytsamy
Membre récent
*

Hors-Ligne

Messages: 2



Je suis un lama!

Voir le Profil
Répondre avec citation

le probleme vient de la combinaison de l'aggregat et du where...

lors du left join, un ligne de la table de gauche qui n'a pas de correspondance a droite, MySQL insere un enregistrement avec tous les champs initialise a NULL.
le where qui vient ensuite elimine ces lignes (puisque celles-ci ont tout a NULL).

Essaie de faire une sous requete dans laquelle tu filtre avec where. et tu joins le resultat a la table destination:

select indicatif, destination,total
from destinations left join (select indicatifdest, count(*) as total
                                          from crsms
                                          where dateheure between '2003-09-01' and '2003-09-02'
                                          group by indicatifdest
                                          ) as d on indicatif=indicatifdest

order by destination

Rapporter au modérateur  
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg