On Wednesday, April 1, 2020, David Gauthier <davegauthie...@gmail.com>
wrote:

> psql (9.6.7, server 11.3) on linux
>
> I want to do something like this
> (intentionally bad sql but will illustrate the need)
>
> select s.name,s.grade from students s where s.class='math'
> union
> select 'whole class', class_grade from all_classes where class=s.class
>
> Of course it's that "where class=s.class" that's a foul.
>
> In English, I want a list of each math student and their grade and then
> append one more record for the entire class, a record that comes from a
> different table but narrowed down to that one class.
>
> I don't care if union isn't the right approach.  Anything that works is
> welcome !
>

You are correct this model seems undesirable but given you have it why
doesn’t the following work for you?

Select students where class = ‘math’
Union all
Select all_classes where class = ‘math’

The generally better query is:
Select from students ... group by rollup

https://www.postgresql.org/docs/9.6/queries-table-expressions.html#QUERIES-GROUPING-SETS

David J.

Reply via email to