0
PostgreSQLでは、クエリの別の場所から引数を必要とするセットを返す関数に参加しようとしています。どのようにこのクエリを書き直すことができますかそれは私の理解では、書かれたクエリはPostgresが持っていない横方向の支持が必要でしょうか?「FROM句エントリに無効な参照が得られない。横方向の回避策:クエリの別の場所からセットを返す関数に引数を渡す
drop table if exists questions;
create table questions (
id int not null primary key,
user_id int not null
);
insert into questions
select generate_series(1,1100), (random()*20000)::int;
drop table if exists users;
create table users (
id int not null primary key
);
insert into users select generate_series(1, 20000);
drop function if exists question_weightings();
create function question_weightings()
returns table (question_id int, weighting int) as $$
select questions.id, (random()*10)::int
from questions;
$$ language sql stable;
drop function if exists similarity(int);
create function similarity(weighting int)
returns table (user_id int, score int) as $$
select users.id, (random() * $1)::int
from users;
$$ language sql stable;
select questions.id, qw.weightings
from questions
join question_weightings() as qw
on qw.question_id = questions.id
join similarity(qw.weighting) as sim
on sim.user_id = questions.user_id;
私は答えはどこかである疑いがありますこのスレッド: http://archives.postgresql.org/pgsql-general/2011-08/msg00482.php。 しかし、CTE、サブクエリ、オフセット0などのさまざまな組み合わせで遊んできましたが、空白になりました。すべての組み合わせが永遠にs imilarity()を一度呼び出すと、それに参加する代わりに
まだリアルクエリーでこれを試す機会はありませんでしたが、返信してうまくいけばこの回答を受け入れます。詳細な努力をいただきありがとうございます。はい、その例はぎこちなく、矛盾していました - 私は、実際のクエリをSOの自己完結型のものに絞りたいと思っていました。 –