1

Here I have simplified tables and query, I don't get it why using select from view v_ticket requires grouping by column group_id also, but when selecting it directly from ticket table not?

create table ticket (ticket_id serial, group_id integer, status integer, 
CONSTRAINT pkey PRIMARY KEY(ticket_id));

create table ticket_data (ticket_id integer, status integer);

create view v_ticket (ticket_id, group_id, status) as select t.ticket_id, t.group_id, td.status from ticket t join ticket_data td on t.ticket_id = td.ticket_id;

insert into ticket (group_id, status) select 1,5; insert into ticket_data (ticket_id, status) select 1,5;

This one throws an error:

select ticket_id, group_id, sum(status) 
  from v_ticket t
group by t.ticket_id;

ERROR: column "t.group_id" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: select ticket_id, group_id, sum(status)

While this one doesn't:

select ticket_id, group_id, sum(status) 
  from ticket t
group by t.ticket_id;

DB FIDDLE

sh4rkyy
  • 149
  • 5

0 Answers0