Yii Framework Forum: count pas correct - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

count pas correct Rate Topic: -----

#1 User is offline   dalf 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 11-May 11
  • Location:Montreal

Posted 08 June 2011 - 01:19 PM

salut,
J'ai un problème que je n'arrive pas à résoudre.
J'ai 2 tables :
tbl_prono : qui contient 2 rangées
tbl_game : qui contient 3 rangées.

Dans la table tbl_prono j'ai une FK (game_id) qui pointe vers tbl_game.
J'ai bien fait la relation dans le model Prono:
return array(
 'game'=>array(self::BELONGS_TO, 'Game', 'game_id'),
);


Tout marche super, j'arrive à bien afficher dans la vue.
MAIS ! Lorsque je fait dans mon controller pour une certaine action:
$dataProvider=new CActiveDataProvider('Prono', array(
   'criteria'=>array(
   'with'=>array('game'=>array('joinType'=>'RIGHT JOIN')),
)));
            
$this->render('pronos',array('dataProvider'=>$dataProvider,));


Il ne m'affiche pas toutes les rangées. Ils devraient m'en afficher 3, mais il en affiche que 2.
Quand je copie/colle la requête dans phpmyadmin, ca me retourne bien 3 rangées.

En fait, le problème je pense que ca vient de la requête suivante générée par system.db.CDbCommand :
SELECT COUNT(DISTINCT `t`.`id`) FROM `tbl_prono` `t`  RIGHT
JOIN `tbl_game` `game` ON (`t`.`game_id`=`game`.`id`) 

Cette requête me retourne que 2! Pour que cette requête me retourne 3, ca devrait être "SELECT COUNT(*) ....."

Cette requête me retourne que 2 car j'ai juste 2 éléments dans tbl_prono. Mais j'ai bien 3 éléments dans tbl_game.
Comme je fait un "RIGHT JOIN" je devrais bel et bien avoir 3 rangées.

Est-ce que quelqu'un aurait une idée pour que je puisse afficher mes 3 colonnes ?
merci
0

#2 User is offline   ouhman 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 118
  • Joined: 26-December 08

Posted 08 June 2011 - 01:45 PM

Salut,

J'ai parcouru en vitesse ton poste et je pense qu'il faut que tu utilises un LEFT JOIN.

A+
0

#3 User is offline   dalf 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 11-May 11
  • Location:Montreal

Posted 08 June 2011 - 01:49 PM

Merci pour ta réponse, mais c'est bien un right join que je souhaite faire.

Si je fais un left join, c'est bien 2 rangées que j'obtiens. Mais ce n'est pas le résultat que je souhaite.
0

#4 User is offline   ouhman 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 118
  • Joined: 26-December 08

Posted 08 June 2011 - 03:07 PM

OK désolé je n'avais pas bien pris le temps de lire.

Donc le problème vient en effet de cette partie:
SELECT COUNT(DISTINCT `t`.`id`) car cela signifie qu'il va compter depuis la table tbl_prono sur la colonne id, or lors de ton RIGHT JOIN cette colonne est NULL donc elle n'est pas prise en compte lors du COUNT je pense.

Il faudrait que tu trouves une manière de forcer la colonne sur laquelle est effectuée le COUNT.

J'ai vite fait regardé sur le site YII et il semblerait que la relation STAT a été crée dans cet objectif:

STAT relation doc

Je suis intéressé de savoir comment tu fix le problème, let me know :)
A+
0

#5 User is offline   dalf 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 11-May 11
  • Location:Montreal

Posted 08 June 2011 - 03:21 PM

Oui c'est exactement mon problème.

Ok je vais regarder avec STAT et je posterai ma réponse.
merci

EDIT: bon, sans succès...
Si jamais quelqu'un a une idée, je suis preneur
0

#6 User is offline   dalf 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 12
  • Joined: 11-May 11
  • Location:Montreal

Posted 09 June 2011 - 06:17 PM

j'ai posté le même problème en anglais
ici

En fait le problème ne vient pas du select count(distinct `t`.`id`). Car j'ai modifié CaActiveFinder.php pour que la requête soit bien "count(*)", mais malgré ça, je vois toujours que 2 rangées dans le CGridBiew...
Je ne sais plus quoi faire...

ESt-ce que le CGridView n'affiche pas la 3ième rangée car la clé primaire est null ?
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users