On Mon, Feb 28, 2005 at 10:48:23 +0100, Joolz <joolz@xxxxxxxxxxxxxxxxxxxxx> wrote: > Hello everyone, > > In a PHP / Postgresql application I have to make a lot of lists like > this: > > THE DATA STRUCTURE > employee_number, employee_name, department > > THE OUTPUT > ------------------------------------ > employee_number employee_name > > department X > 1 Johnson > 22 Jackson > subtotal: 2 employees > > department Y > 222 Smith > 3 Doe > 44 Jameson > subtotal: 3 employees > > grand total: 5 employees > ------------------------------------ > > I see 2 ways to solve this: > > - use SELECT for the detail lines and SELECT COUNT (*) for the (sub) > totals > > - SELECT the whole lot and let PHP do the grouping and counting You can use ORDER BY to do most of the grouping work. The app just needs to check when the department changes and keep counters. > The second solution seems old fashioned to me and the first has a > catch: all queries have to be made within a single transaction. I think more than that. I think you also want the transaction isolation level set to serializeable if you want a consistant report. > I have the feeling that this is a very common question, how do you > people handle it? I looked at a lot of script sites, but no luck. I would suggest method 2 using an ORDER BY to produce the detail lines in the correct order.