1

SubSonic 2.1を使用してテーブルにエイリアスを割り当てるにはどうすればよいですか?

次のクエリを再現しようとしています。

SELECT *
FROM posts P
RIGHT OUTER JOIN post_meta X ON P.post_id = X.post_id
RIGHT OUTER JOIN post_meta Y ON P.post_id = Y.post_id
WHERE X.meta_key = "category"
    AND X.meta_value = "technology"
    AND Y.meta_key = "keyword"
    AND Y.meta_value = "cloud"

私はSubSonic2.1を使用していますが、2.2へのアップグレードは(まだ)オプションではありません。ありがとう。

4

3 に答える 3

1

ビューを使用します。

CREATE VIEW post_meta2 AS SELECT * FROM post_meta

次に、クエリは次のようになります。

SELECT *
FROM posts
RIGHT OUTER JOIN post_meta ON posts.post_id = post_meta.post_id
RIGHT OUTER JOIN post_meta2 ON posts.post_id = post_meta2.post_id
WHERE post_meta.meta_key = "category"
    AND post_meta.meta_value = "technology"
    AND post_meta2.meta_key = "keyword"
    AND post_meta2.meta_value = "cloud"

はい、私は知っています、それは粗雑です。しかし、それでも効果的です。エレガンスが必要な場合は、すでに提案されているようにアップグレードしてください。それ以外の場合は、一時的な回避策としてこれで十分です。

于 2010-01-21T00:03:03.090 に答える
1

CodingHorror機能は 2.1 に存在しますか? ドキュメントには、2.x カテゴリにあると記載されています。

于 2010-01-18T20:23:45.503 に答える
0

subsonic 2.2で使用するだけでうまくいくと思います。アップグレードを真剣に検討する必要があります。バージョン 2.2 には、あなたの生活をより良くするためのより多くの機能があります。

subsonic.select().from("posts p")
        .RightOuterJoin("post_meta","post_id","posts","post_id")
        .RightOuterJoin("post_meta","post_id","posts","post_id")
        .Where("post_meta.meta_key").IsEqualTo("category")
        .And("post_meta.meta_value").IsEqualTo("technology")
        .And("post_meta.meta_key").IsEqualTo("keyword")
        .And("post_meta.meta_value").IsEqualTo("cloud")
于 2010-01-19T17:35:43.323 に答える