Génial merci pour votre aide
finalement je fait ma requête sur un autre champs

q=Gistevent.objects.filter(attr_name='machin chose')

je perds 400 id_event  mais pour ce proto ça suffira

T.


2013/2/6 Florian Strzelecki <[email protected]>

> En fait, je crois que j'ai mal compris ta question d'origine.
>
> Si je prends ton exemple de départ, ta requête SQL :
>
> SELECT * FROM gistevent WHERE id_event IN (SELECT DISTINCT id_event FROM
> gistevent)
>
> Cette requête *doit* te retourner *tous les éléments* de ta table.
> Ta sous-requête va retourner tous les id_event existant dans la table
> (donc touchant à absolument toute la table), et tu vas ensuite filtrer sur
> cette liste d'élément... qui représente *toute* ta table.
>
> Donc il y a un problème dans ce que tu dis vouloir faire.
> Peut-être que tu voudrais plutôt faire quelque chose comme ceci :
>
> SELECT DISTINCT field_unique, id_event WHERE 1 GROUP BY field_unique,
> id_event
>
> Ce qui peut se traduire par quelque chose du genre :
>
> Gistevent.objects.values('field_unique', 'id_event').annotates()
>
> Mais comme le dit Remy (pendant que je rédige ce mail) : tu dois avoir un
> problème dans ton schéma quelque part...
>
> Le 6 février 2013 14:21, Florian Strzelecki <[email protected]>a 
> écrit :
>
> Hm.
>>
>> Et qu'est-ce que tu obtiens comme résultat juste en faisant ça :
>>
>> Gistevent.objects.values('id_event').distinct()
>>
>> Parce qu'au "pire" tu peux obtenir une liste de id_event distinct qui
>> t'intéresse avec une première requête, puis une seconde requête avec le IN.
>> Ça te permettra déjà de voir où est le soucis exactement.
>>
>>
>>
>> Le 6 février 2013 12:14, Tonton <[email protected]> a écrit :
>>
>> Merci de ta réponse mais non
>>> j'ai toute la table
>>>
>>>
>>> je cherche...
>>>
>>>
>>> 2013/2/6 Florian Strzelecki <[email protected]>
>>>
>>>> Je réponds de manière naïve (je n'ai pas testé) :
>>>>
>>>>
>>>> Gistevent.objects.filter(id_event__in=Gistevent.objects.values('id_event').distinct()).all()
>>>>
>>>> Ou quelque chose dans le genre. Le but est de fournir en filtre une
>>>> sous-requête SQL.
>>>> Le "values" permet de ne sélectionner que le champ "id_event", et le
>>>> distinct sans field va juste faire un SELECT DISTINCT basique (et ça
>>>> devrait marcher avec MySQL).
>>>>
>>>> Distinct:
>>>> https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.distinct
>>>> Values:
>>>> https://docs.djangoproject.com/en/dev/ref/models/querysets/#values
>>>>
>>>> Par contre, je me rends compte que je ne me rappelle plus s'il est
>>>> possible de faire des sous-requêtes...
>>>> Faudrait que je teste à l'occasion.
>>>>
>>>>
>>>>
>>>> Le 6 février 2013 09:54, Tonton <[email protected]> a écrit :
>>>>
>>>>> Bon s'il il y à du monde alors je pose une question 8)
>>>>>
>>>>> je voudrai effectuer cette requête
>>>>>
>>>>> select * from gistevent where id_event in (
>>>>>     select distinct id_event from gistevent )
>>>>>
>>>>>
>>>>> id_event contrairement à son nom n'est pas une clé de table
>>>>> comment j’écris ça dans django ?
>>>>> faut il créer une première requête pour faire une liste sachant que
>>>>> mysql ne prend pas le distinct on
>>>>>
>>>>> Merci
>>>>>
>>>>> T.
>>>>>
>>>>> _______________________________________________
>>>>> django mailing list
>>>>> [email protected]
>>>>> http://lists.afpy.org/mailman/listinfo/django
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> django mailing list
>>>> [email protected]
>>>> http://lists.afpy.org/mailman/listinfo/django
>>>>
>>>
>>>
>>> _______________________________________________
>>> django mailing list
>>> [email protected]
>>> http://lists.afpy.org/mailman/listinfo/django
>>>
>>
>>
>
> _______________________________________________
> django mailing list
> [email protected]
> http://lists.afpy.org/mailman/listinfo/django
>
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à