developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 14 years ago

Closed 12 years ago

#1 closed new feature (fixed)

attribut distinct

Reported by: zagor Owned by: laurentj
Priority: normal Milestone: Jelix 1.0 RC1
Component: jelix:dao Version: 1.0alpha4
Severity: normal Keywords:
Cc: Blocked By:
Blocking: Documentation needed:
Hosting Provider: Php version:

Description

<factory>
<method name="findNomByCiv" type="select" distinct="nom">
<parameter name="civ" />
<conditions>
<eq property="civilisation" expr="$civ" />
</conditions>
<order>
<orderitem property="nom" way="asc" />
</order>
</method>
</factory>

Avec ceci le distinct se fait sur l'ensemble des champs de la base et non pas uniquement sur nom.

Change History (9)

comment:1 Changed 14 years ago by laurentj

  • Priority changed from normal to low

en fait, il y a une mauvaise interpretation de ma part sur le mot clé distinct. La distinction se fait sur l'ensemble des champs déclarés dans l'expression SELECT et non pas sur un champs unique parmis ceux indiqués. Or il n'est pas prévu par jDao de limiter un select que sur un ou quelques champs indiqués parmis les propriétés... Si on permettait cela, cela voudrait dire que la méthode ne peut envoyer des objets records (dont toutes les propriétés devraient être renseignées). On casserait donc le modèle actuel de jDao.

Il faut reflechir alors à un nouveau modèle ou à un nouveau type de méthode... Ce "bug" sera corrigé donc plus tard. En attendant, je change l'attribut distinct : il ne doit contenir que true ou false. L'alternative pour ton cas serait donc de faire une méthode en php..

comment:2 Changed 13 years ago by laurentj

  • Milestone set to Jelix 1.0

comment:3 Changed 13 years ago by laurentj

  • Priority changed from low to high

comment:4 Changed 13 years ago by laurentj

  • Priority changed from high to normal
  • Severity changed from minor to normal

En fait, selon les specs de SQL et aprés vérification dans mysql, il n'est pas possible de faire un select DISTINCT(champs, champs). En tout cas, ça ne change pas le comportement par rapport à un select DISTINCT champs, champs.

Si on veut juste récupérer les enregistrements qui ne font pas doublon, sur un ou plusieurs champs parmis la totalité des champs SELECT, il faut en fait utiliser un GROUP BY.

On pourrait alors avoir un attribut group by, qui devrait contenir une liste de propriété sur lesquelles faire le group by.

comment:5 Changed 13 years ago by laurentj

  • Type changed from bug to new feature

comment:6 Changed 12 years ago by laurentj

  • Owner set to laurentj
  • Status changed from new to assigned

Ajouté dans le trunk, le support d'un attribut groupby sur les méthodes de type select. On y met la liste des propriétés sur lesquelles faire le groupby.

comment:7 follow-up: Changed 12 years ago by laurentj

  • Resolution set to fixed
  • Status changed from assigned to closed

comment:8 in reply to: ↑ 7 Changed 12 years ago by chris

  • Resolution fixed deleted
  • Status changed from closed to reopened

Replying to laurentj: Oui, mais le GROUPBY doit être fait *avant* le ORDER BY, sinon mysql gueule !

comment:9 Changed 12 years ago by laurentj

  • Resolution set to fixed
  • Status changed from reopened to closed

Merci de créer un nouveau ticket pour les nouveaux bugs. Ne plus rouvrir ce ticket s'il vous plait.

Note: See TracTickets for help on using tickets.