C# 从WebGrid中的SQL联接访问列
我将在我的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
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.*。关于子查询,我的观点是您不能指定选择重复的列名。您必须使用该列名的别名。已更新我的答案以解决您的问题。