C# 从WebGrid中的SQL联接访问列

C# 从WebGrid中的SQL联接访问列,c#,razor,html-helper,C#,Razor,Html Helper,我将在我的WebGrid中显示一些数据。SQL语句如下所示: mSQL = "SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id"; 在表1和表2中,我有一些同名的列。如果我想从一个指定的表中访问重复的列,我习惯于使用Ado访问它: [tablename].[columnname] 但这在WebGrid中似乎不起作用: var mLocations = mDB.Query(mSQL); var mGrid = new

我将在我的WebGrid中显示一些数据。SQL语句如下所示:

mSQL = "SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id";
在表1和表2中,我有一些同名的列。如果我想从一个指定的表中访问重复的列,我习惯于使用Ado访问它:

[tablename].[columnname]
但这在WebGrid中似乎不起作用:

var mLocations = mDB.Query(mSQL);
var mGrid = new WebGrid(source: mLocations, rowsPerPage: 50, canPage: true);
mGridHTML = mGrid.GetHtml(
    tableStyle: "grid wide",
    headerStyle: "head",
    alternatingRowStyle: "alt",
    columns: mGrid.Columns(
        mGrid.Column(header: "V_1", format:@item.table1.viewedcount),
        mGrid.Column(header: "V_2", format:@item.table2.viewedcount)
    )
);
如何访问它们?

SELECT语句不会将结果返回到两个单独的查询中

考虑以下查询

SELECT *
FROM [TableA] A
INNER JOIN [TAbleA] A2
ON A.ID = A2.ID
现在尝试从该查询中选择一列

SELECT Example.ID
FROM
(
    SELECT *
    FROM [TableA] A
    INNER JOIN [TAbleA] A2
    ON A.ID = A2.ID
) Example
无法确定要提取哪个ID

因此,您必须执行以下操作

SELECT Example.ID, Example.ID2
FROM
(
    SELECT A.ID AS ID, A2.ID AS ID2
    FROM [TableA] A
    INNER JOIN [TableA] A2
    ON A.ID = A2.ID
) Example
所以要解决你的问题

mSQL = "SELECT table1.viewedcount AS table1ViewCount, table2.viewedcount AS table2ViewCount FROM table1 INNER JOIN table2 ON table1.id = table2.id";
…作为您的查询,然后像这样设置网格

var mLocations = mDB.Query(mSQL);
var mGrid = new WebGrid(source: mLocations, rowsPerPage: 50, canPage: true);
mGridHTML = mGrid.GetHtml(
    tableStyle: "grid wide",
    headerStyle: "head",
    alternatingRowStyle: "alt",
    columns: mGrid.Columns(
        mGrid.Column(header: "V_1", format:@item.table1ViewCount),
        mGrid.Column(header: "V_2", format:@item.table2ViewCount)
    )
);

你说得不对。从tbl_A.id=tbl_B.id上的tbl_A内部连接tbl_B中选择tbl_A.*,tbl_B.*在MSSQL上工作正常。访问id列的on与tbl_A.id od tbl_B.id一起工作。试试看。生成子查询不是我的解决方案。是的,查询工作正常,但这不是您正在执行的查询选择tbl_a.*,tbl_B.*。关于子查询,我的观点是您不能指定选择重复的列名。您必须使用该列名的别名。已更新我的答案以解决您的问题。