Re: BUG #15783: Fail to select with a function in FROM clause plus another table
От | Tom Lane |
---|---|
Тема | Re: BUG #15783: Fail to select with a function in FROM clause plus another table |
Дата | |
Msg-id | 6702.1556427312@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | BUG #15783: Fail to select with a function in FROM clause plus another table (PG Bug reporting form <noreply@postgresql.org>) |
Список | pgsql-bugs |
PG Bug reporting form <noreply@postgresql.org> writes: > select m.nome socio, p.tipo, sum(c.valor * m.percentual / 100) valor > from contas_pagas('2019-04-01', '2019-04-30', 'R') c, medico m > inner join planoconta p on (c.cod_planoconta = p.cod) > where (m.percentual > 0) > group by m.nome, p.tipo > -- ERROR > -- SQL Error [42P01]: ERROR: invalid reference to FROM-clause entry for > table "c" > -- Hint: There is an entry for table "c", but it cannot be referenced from > this part of the query. > In other words, we need to use cross join instead of put all tables in FROM > clause, if one of these tables was a function that returns a table. No, this has nothing to do with whether the relations are functions or tables. You've forgotten that JOIN binds more tightly than comma in a FROM-list, so that the relations available to that ON clause are only m and p. MySQL got this wrong for many years (maybe still does?), which has encouraged a lot of confusion, but the SQL standard is entirely clear on the point. regards, tom lane
В списке pgsql-bugs по дате отправления: