It was in 2017 Now you can pass to select raw-sql-strings with any expression, just end with ' ... *AS* some_name' (*AS* must be in uppercase )
воскресенье, 15 ноября 2020 г. в 02:54:53 UTC+3, [email protected]: > looks like need executeSQL needed for string_agg: > Is it possible to do more advanced queries (like using string_agg) with > DAL in the meantime? > Massimo Di Pierro > Apr 12, 2017, 4:21:36 AM > to [email protected] > You have to use db.executesql for that. Sorry. > > On Saturday, November 14, 2020 at 3:28:06 PM UTC-8 [email protected] > wrote: > >> just replace *GROUP_CONCAT* with *string_agg * >> >> воскресенье, 15 ноября 2020 г. в 02:19:52 UTC+3, [email protected]: >> >>> I have postgres. How would it look for that? >>> >>> On Saturday, November 14, 2020 at 9:03:13 AM UTC-8 [email protected] >>> wrote: >>> >>>> Just in case : pydal doesnt support backend specific aggregate functions >>>> >>>> >>>> суббота, 14 ноября 2020 г. в 19:54:35 UTC+3, [email protected]: >>>> >>>>> There is no db.executesql >>>>> >>>>> суббота, 14 ноября 2020 г. в 19:51:52 UTC+3, [email protected]: >>>>> >>>>>> sorry, did not mean direct SQL through db.executesql , meant through >>>>>> DAL >>>>>> >>>>>> On Saturday, November 14, 2020 at 8:23:11 AM UTC-8 [email protected] >>>>>> wrote: >>>>>> >>>>>>> Assuming sqlite: >>>>>>> person_cnt = >>>>>>> db.PERSON_PROJECT_PRIORITY.person_fk.count().with_alias('person_cnt') >>>>>>> >>>>>>> >>>>>>> prioritySet = db((db.PERSON.id <http://db.person.id/> == >>>>>>> PERSON-PROJECT-PRIORITY.person_fk) & (PROJECT.id == >>>>>>> PERSON-PROJECT-PRIORITY.project_fk)).select( >>>>>>> ..., >>>>>>> person_cnt, >>>>>>> 'GROUP_CONCAT(person.person_name,",") AS person_list' >>>>>>> groupby = db.PERSON-PROJECT-PRIORITY.project_fk, >>>>>>> ) >>>>>>> >>>>>>> суббота, 14 ноября 2020 г. в 09:40:17 UTC+3, [email protected]: >>>>>>> >>>>>>>> How to write a statement that counts which projects are the >>>>>>>> priority of most people >>>>>>>> >>>>>>>> PROJECT >>>>>>>> id >>>>>>>> project_name >>>>>>>> >>>>>>>> PERSON >>>>>>>> id >>>>>>>> person_name >>>>>>>> >>>>>>>> PERSON_PROJECT_PRIORITY >>>>>>>> person_fk >>>>>>>> project_fk >>>>>>>> >>>>>>>> prioritySet = db((db.PERSON.id == >>>>>>>> PERSON-PROJECT-PRIORITY.person_fk) & (PROJECT.id == >>>>>>>> PERSON-PROJECT-PRIORITY.project_fk)).select() >>>>>>>> >>>>>>>> How to sort by count of projects which have priority in order of >>>>>>>> the most persons' priority? >>>>>>>> >>>>>>>> Output looks like this: >>>>>>>> >>>>>>>> Paint-the-house (10) [Means is the top priority for 10 people] >>>>>>>> Plant-a-garden (5) >>>>>>>> Clean-out-garage (2) >>>>>>>> >>>>>>>> If you have additional time, how to write so output looks like: >>>>>>>> >>>>>>>> Paint-the-house (10) Tom, Sue, Tony, Ted, Mary, Fred, Sal, Chris, >>>>>>>> Ed, Sally >>>>>>>> Plant-a-garden (5) Harry, George, Joanne, Tony, Janet >>>>>>>> Clean-out-garage (2) Clyde, Jane >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> Alex Glaros >>>>>>>> >>>>>>> -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/e5dec1cd-da46-43e8-af30-2b873e5f2f3cn%40googlegroups.com.

