Vous n'êtes pas identifié(e).
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.
Hors ligne
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 <to.tonton _AT_ gmail.com> 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
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
Merci de ta réponse mais non
j'ai toute la table
je cherche...
2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com>
> 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 <to.tonton _AT_ gmail.com> 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
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
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 <to.tonton _AT_ gmail.com> a écrit :
> Merci de ta réponse mais non
> j'ai toute la table
>
>
> je cherche...
>
>
> 2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com>
>
>> 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 <to.tonton _AT_ gmail.com> 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
>>> django _AT_ lists.afpy.org
>>> http://lists.afpy.org/mailman/listinfo/django
>>>
>>
>>
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
Non mais c'est sur que le IN va retourner toutes les lignes.
Moi ce que je ne comprends pas c'est le but de cette requête ?
À mon avis il y a un problème de modèle de données pour en arriver à ce
genre de requêtes.
Cordialement,
Rémy
Le 06/02/2013 14:21, Florian Strzelecki 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 <to.tonton _AT_ gmail.com
> <mailto:to.tonton _AT_ gmail.com>> a écrit :
>
> Merci de ta réponse mais non
> j'ai toute la table
>
>
> je cherche...
>
>
> 2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com
> <mailto:florian.strzelecki _AT_ gmail.com>>
>
> 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 <to.tonton _AT_ gmail.com
> <mailto:to.tonton _AT_ gmail.com>> 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
> django _AT_ lists.afpy.org <mailto:django _AT_ lists.afpy.org>
> http://lists.afpy.org/mailman/listinfo/django
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org <mailto:django _AT_ lists.afpy.org>
> http://lists.afpy.org/mailman/listinfo/django
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org <mailto:django _AT_ lists.afpy.org>
> http://lists.afpy.org/mailman/listinfo/django
>
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Hors ligne
oui j'ai bien une list d'id_event present dans la table
mais en fait meme ma requete sql est fausse dsl
j'ai besoin de n'afficher qu'une fois par id_event
j'ai disont une dizaine de ligne par id_event mais je n'en voudrai qu'une a
chaque fois donc je doit surement rajouter un critere pour filter sur un
autre champs afin de choisir quel ligne garrder ...
2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com>
> 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 <to.tonton _AT_ gmail.com> a écrit :
>
> Merci de ta réponse mais non
>> j'ai toute la table
>>
>>
>> je cherche...
>>
>>
>> 2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com>
>>
>>> 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 <to.tonton _AT_ gmail.com> 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
>>>> django _AT_ lists.afpy.org
>>>> http://lists.afpy.org/mailman/listinfo/django
>>>>
>>>
>>>
>>> _______________________________________________
>>> django mailing list
>>> django _AT_ lists.afpy.org
>>> http://lists.afpy.org/mailman/listinfo/django
>>>
>>
>>
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
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
<florian.strzelecki _AT_ gmail.com>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 <to.tonton _AT_ gmail.com> a écrit :
>
> Merci de ta réponse mais non
>> j'ai toute la table
>>
>>
>> je cherche...
>>
>>
>> 2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com>
>>
>>> 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 <to.tonton _AT_ gmail.com> 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
>>>> django _AT_ lists.afpy.org
>>>> http://lists.afpy.org/mailman/listinfo/django
>>>>
>>>
>>>
>>> _______________________________________________
>>> django mailing list
>>> django _AT_ lists.afpy.org
>>> http://lists.afpy.org/mailman/listinfo/django
>>>
>>
>>
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
Hors ligne
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 <florian.strzelecki _AT_ gmail.com>
> 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 <florian.strzelecki _AT_ gmail.com>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 <to.tonton _AT_ gmail.com> a écrit :
>>
>> Merci de ta réponse mais non
>>> j'ai toute la table
>>>
>>>
>>> je cherche...
>>>
>>>
>>> 2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com>
>>>
>>>> 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 <to.tonton _AT_ gmail.com> 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
>>>>> django _AT_ lists.afpy.org
>>>>> http://lists.afpy.org/mailman/listinfo/django
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> django mailing list
>>>> django _AT_ lists.afpy.org
>>>> http://lists.afpy.org/mailman/listinfo/django
>>>>
>>>
>>>
>>> _______________________________________________
>>> django mailing list
>>> django _AT_ lists.afpy.org
>>> http://lists.afpy.org/mailman/listinfo/django
>>>
>>
>>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>
Hors ligne
Le 06/02/2013 12:14, Tonton a écrit :
> Merci de ta réponse mais non
> j'ai toute la table
>
>
> je cherche...
>
>
> 2013/2/6 Florian Strzelecki <florian.strzelecki _AT_ gmail.com
> <mailto:florian.strzelecki _AT_ gmail.com>>
>
> 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 <to.tonton _AT_ gmail.com
> <mailto:to.tonton _AT_ gmail.com>> 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
> django _AT_ lists.afpy.org <mailto:django _AT_ lists.afpy.org>
> http://lists.afpy.org/mailman/listinfo/django
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org <mailto:django _AT_ lists.afpy.org>
> http://lists.afpy.org/mailman/listinfo/django
>
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
... La requête retourne toute la table, c'est normal : Tu prends toutes
les données dont une valeur (id_event) a des valeurs distinctes. Lit la
requête !
frague
Hors ligne