Comments on: Compter les doublons avec l’ORM Django http://sametmax.com/compter-les-doublons-avec-lorm-django/ Du code, du cul Mon, 28 Oct 2019 11:54:55 +0000 hourly 1 https://wordpress.org/?v=4.9.7 By: Sam http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16127 Mon, 25 Nov 2013 10:53:30 +0000 http://sametmax.com/?p=7761#comment-16127 Oui, j’ai fais ça avec un projet en cours.

]]>
By: zanguu http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16118 Mon, 25 Nov 2013 08:44:56 +0000 http://sametmax.com/?p=7761#comment-16118 dans le count, il faudrait un expert bdd pour savoir s’il y a une vraie différence de perf mais sur les résultats ça ne change pas grand chose d’y mettre un ‘*’ ou ‘finish’

par contre tu as oublié de changer le nom de ta table dans le group by ? parce que là je vois pas bien d’où viens ce nom

]]>
By: Sam http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16076 Sun, 24 Nov 2013 08:41:00 +0000 http://sametmax.com/?p=7761#comment-16076 Bon, on était pas loin, qs.query.sql_with_params() donne :

SELECT "massage_massage"."finish", COUNT("massage_massage"."id") AS "count" FROM "massage_massage" GROUP BY "massage_massage"."finish"'
]]>
By: N http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16027 Fri, 22 Nov 2013 21:34:22 +0000 http://sametmax.com/?p=7761#comment-16027 Ah tiens, je découvre d’autres façons de l’écrire, moi je fais ça:
SELECT finish, count(*) as c FROM massage GROUP BY finish HAVING c > 1

]]>
By: Zanguu http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16007 Fri, 22 Nov 2013 10:51:52 +0000 http://sametmax.com/?p=7761#comment-16007 @bendem, pour m’être régulièrement cassé le cul avec des requêtes à la con, si le GROUP BY est “peu intuitif” alors le DISTINCT j’en parle même pas. Et Il ne fait pas le travail d’un having comme le sous entend ton dernier message

@foxmask, environ : Massage.objects.values('finish').annotate(total=Count('finish'))
donne
SELECT finish, count(*) 'total'
FROM massage
GROUP BY finish

Et : Massage.objects.values('finish').annotate(total=Count('finish')).filter(total__gt=1)
donne
SELECT finish, count(*)
FROM massage
GROUP BY finish
HAVING count(*) > 1

Sachant qu’on peut apparement aussi utiliser :
qs = Massage.objects.all()
qs.query.group_by = ['finish']
qs.query.having = ['count(finish) > 1']

ps: en sql le count(*) et le count(finish) avec une clause GROUP BY reviennent (dans 99% des cas) au même

]]>
By: Sam http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16006 Fri, 22 Nov 2013 10:37:52 +0000 http://sametmax.com/?p=7761#comment-16006 @bendem Le but n’est pas de supprimer les doublons, mais de les trouver.

@kikine : pas sur, il faut regarder ce que l’ORM genère, ce n’est pas un humain.

@foxmask, si j’y pense je regarderai.

]]>
By: kikine http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16005 Fri, 22 Nov 2013 10:34:31 +0000 http://sametmax.com/?p=7761#comment-16005 ou mieux
SELECT FINISH,COUNT(*) FROM Massage GROUP BY FINISH

]]>
By: kikine http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16004 Fri, 22 Nov 2013 10:29:25 +0000 http://sametmax.com/?p=7761#comment-16004 SELECT COUNT(*) FROM Massage GROUP BY FINISH

]]>
By: bendem http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16002 Fri, 22 Nov 2013 09:33:23 +0000 http://sametmax.com/?p=7761#comment-16002 Le select distinct supprime les doublons, ma remarque concernait juste la fin de l’article…

]]>
By: foxmask http://sametmax.com/compter-les-doublons-avec-lorm-django/#comment-16001 Fri, 22 Nov 2013 09:27:39 +0000 http://sametmax.com/?p=7761#comment-16001 le select distinct retourne qu’une occurence non ? là il veut les compter , ou j’ai pas compris.

@sam : pour ma culture, ca donne quoi la requete SQL complete de tes 2 exemples ? peut-etre j’aurai une remarque en fonction de ca :)

]]>