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"

我正在使用 SubSonic 2.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

我想如果你只在亚音速 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 回答