IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend_Db PHP Discussion :

Zend_Db problème group by et count [ZF 1.11]


Sujet :

Zend_Db PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    ICD
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : ICD

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut Zend_Db problème group by et count
    Bonjour,

    J'ai un petit souci pour crée une requête qui est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select *,count(*) as count from offres o, produits p where o.id_produit=p.id_produit group by o.id_produit
    Ma base de données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Table Offres
    id_offre 	id_produit 	   nom_offre 
    1               1                 ....                
    2               1                 ....                 
    3               2                 ....                 
    4               2                 ....                 
    Table Produits
    id_produit 	designation_produit
    1               .....
    2               .....

    et ma classe ProduitMapper :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    <?php
     
    class Application_Model_ProduitMapper
    {
    	protected $_dbTable;
     
        public function setDbTable($dbTable)
        {
            if (is_string($dbTable)) {
                $dbTable = new $dbTable();
            }
            if (!$dbTable instanceof Zend_Db_Table_Abstract) {
                throw new Exception('Invalid table data gateway provided');
            }
            $this->_dbTable = $dbTable;
            return $this;
        }
     
        public function getDbTable()
        {
            if (null === $this->_dbTable) {
                $this->setDbTable('Application_Model_DbTable_Produit');
            }
            return $this->_dbTable;
        }
     
        public function getOffreCatalogue($id) {
        	$table = $this->getDbTable();
        	$select =$table->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
        	$select->setIntegrityCheck(false);
        	$select->from($table,array('count' => 'COUNT(offres.id_offre)'));
        	$select->where('produits.id_catalogue = ? ', $id);
        	$select->join('offres', 'offres.id_produit = produits.id_produit');
        	$select->group('offres.id_produit');
        	$rowset = $this->getDbTable()->fetchAll($select);
        	return $rowset;
        }
     
    }
    Mais dans le résultat la valeur de count est 4 alors qu'elle doit être égale à 2
    Une idée ?

    Merci pour vos réponses

  2. #2
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    j'ai l'impression que ca vient de ta requete, le jocker * au début fait remonter l'id de l'offre que tu ne peux pas agréger puisqu'ils sont différent...
    essaies ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select o.id_produit,count(*) as count from offres o, produits p where o.id_produit=p.id_produit group by o.id_produit
    et dis nous ce que ça donne ?!

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Affiche ta requête pour voir ou est le problème.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo $select->__toString();

  4. #4
    Membre habitué
    Profil pro
    ICD
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : ICD

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut
    Bonjour,

    Voilà ce qu'il me donne qu'on j'affiche ma requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `produits`.*, COUNT(offres.id_offre) AS `count`, `offres`.* FROM `produits` INNER JOIN `produits` AS `produits_2` INNER JOIN `offres` ON offres.id_produit = produits.id_produit WHERE (produits.id_catalogue = 1 ) GROUP BY `offres`.`id_produit`

    le joker n'est pas spécifié dans ma requête Zend


    Edité :

    c'est bon j'ai résolu mon problème
    il fallait juste passer un tableau vide à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $select->from
    $select->from(array(),array('count' => 'COUNT(offres.id_offre)'));

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Problème group by sur view
    Par helene34 dans le forum Oracle
    Réponses: 2
    Dernier message: 04/01/2007, 08h25
  2. Problème Group By
    Par Fishes83 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 03/01/2007, 13h52
  3. [MySQL] Problème requete avec un count
    Par kornmuse90 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/03/2006, 08h56
  4. Problème très bizarre avec COUNT
    Par Nomade95000 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/10/2005, 14h12
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo