如何为使用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不是一个选项(尚未)。感谢。
答案 0 :(得分:1)
2.1中是否存在CodingHorror功能?它在文档中声明它属于2.x类别。
答案 1 :(得分: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"
是的,我知道,这很粗糙。但仍然有效。如果你想要优雅,那么就像已经建议的那样升级,否则这应该足以用于临时解决方法。
答案 2 :(得分: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")