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