.net 亚音速下的表别名

.net 亚音速下的表别名,.net,sql,subsonic,table-alias,.net,Sql,Subsonic,Table Alias,如何为具有亚音速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 = "ke

如何为具有亚音速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"

我正在使用亚音速2.1,升级到2.2还不是一个选择。谢谢。

功能是否存在于2.1中?它在文档中声明它属于2.x类。

我认为如果你只在亚音速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")
使用视图:

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"

是的,我知道,这很粗糙。但仍然有效。如果您想要优雅,请按照已经建议的方式进行升级,否则这对于临时解决方案来说就足够了。

是的,CodingHorror(或InlineQuery)可以工作,但这也会消除使用ActionRecord的目的。-1 OP明确表示升级不是一个选项。所以这不能回答这个问题……我认为这是一个有效的选择。然而我只是想知道亚音速不能简单地允许alias引用表名?明白了,SQL是我的专业领域,而不是亚音速。嗯,赏金怎么了?@rbaryyoung,基于如此赏金系统,如果赏金结束时没有被接受的答案,投票率最高的人将获得赏金。