答えて
は、あなたがしてそうすることができる。
WITH subquery AS(
SELECT * FROM TheTable
)
SELECT *
FROM subquery q1
JOIN subquery q2 on ...
またはクエリを含むビューを作成し、その上で参加することによって:
SELECT *
FROM TheView v1
JOIN TheView v2 on ...
またはブルートフォースアプローチ:サブクエリを2回入力します。
SELECT *
FROM (
SELECT * FROM TheTable
) sub1
LEFT JOIN (
SELECT * FROM TheTable
) sub2 ON ...
http://www.postgresql.org/docs/8.3/interactive/unsupported-features-sql-standard.htmlによると、PostgreSQLは最新のバージョン8.3のWITHクエリをサポートしていません。 – markusk
8.4にアップグレードすることができます。現在ベータ版ですが、WITHが最後にあります。http://www.postgresql.org/docs/8.4/static/queries-with.html –
サブクエリはやや複雑なので、最初にビューを試してから、 "brute force"のソリューションを試してみてください。最終的には、pgsql 8.4の出荷時にWITHを使用するように切り替えるでしょう。 – Joril
あなたは、テーブルのクエリの結果をその同じテーブルに意味しますか?そうであれば、はい、可能です。
--Bit of a contrived example but...
SELECT *
FROM Table
INNER JOIN
(
SELECT
UserID, Max(Login) as LastLogin
FROM
Table
WHERE
UserGroup = 'SomeGroup'
GROUP BY
UserID
) foo
ON Table.UserID = Foo.UserID AND Table.Login = Foo.LastLogin
申し訳ありませんが、あなたの「私はPostGresを使用しています」というコメントに気付きました。上記が文法上ポストグルで正しいかどうかは不明です。 –
AFAICSは素晴らしいです(ただし、 'foo'対 'Foo'の対立の場合を除いて);-)。 –
@ Eoin:よく質問の_results_に参加することを意味しましたが、皆さんの助けてくれてありがとうございます:) – Joril
はい、ちょうどクエリ別名:
SELECT *
FROM (
SELECT *
FROM table
) t1
JOIN (
SELECT *
FROM table
) t2
ON t1.column < t2.other_column
- 1. 複合SQL自己結合
- 2. 自己結合条件
- 3. 複数条件付き自己結合
- 4. Ruby On Rails自己結合関連
は、あなたが何をしようとしての例を提供してもらえますか? –