クロスジョインから特定のカラムを参照する方法を理解しようとしています。 Cross joinテーブル全体には別名も与えられています。なぜなら、他のサブクエリと自然に結合しているため、カラム名にアクセスするのが難しいからです。SQL/PSQL同じテーブルを相互にクロスジョインした後にwhere句のカラム名を参照する
select q0.sid, q0.sname
from (buys t1 cross join student s3 cross join student s4) q0 natural join
(select s5.sid, s5.sname, s6.sid, s6.sname, t3.sid, t3.bookno
from buys t2 cross join student s5 cross join student s6 cross join buys t3
where t2.sid = s5.sid and t3.bookno = t2.bookno) q1
where t1.sid = s3.sid;
問題があることq0.sidがあいまいであるため、t1.sidとs3.sidを比較しようとしているの「」節は: は、ここでは、コードです。クロス結合からこれらの列にアクセスするにはどうすればよいですか?
カラム[別名](https://www.tutorialspot.com/postgresql/postgresql_alias_syntax.htm)を使用してください(例:SELECT s5.sid AS s5_sid、s6.sid AS s6_sid')。 – Serge
これは問題ではありません。私はt1.sidとs3.sidにアクセスすることはできません。最初のクロス・ジョインの中で最後のクラスがどこにあるのか教えてください。 –
'(t1をクロス・ジョイントする学生s3をクロス・ジョイントする学生s4を購入する)'をリファクタリングする必要があります。どのように '(SELECT t1.sid AS t1_sid、s3.sid AS s3_sid、s4.sid AS s4_sid FROM購入t1 CROSS JOIN学生s3 CROSS JOIN学生s4'を購入するのですか? – Serge