在2个包含相同字段名称的表上选择?

时间:2009-05-23 15:46:07

标签: subsonic inner-join

我正在开发一个使用基于Joomla的数据库的CMS!在Joomla db中,我们有2个表:

+----------+
|Categories|
+----------+
id
title
...

+-------+
|Content|
+-------+
id
title
catid
...

我的查询如下:

SqlQuery q = new Select("*")
                         //.Top("1")
                         .From(JosContent.Schema)
                         .InnerJoin(JosUser.IdColumn, JosContent.CreatedByColumn)
                         .InnerJoin(JosCategory.IdColumn, JosContent.CatidColumn)
                         .Where("catid").IsEqualTo(catId);

在ASPX页面中,我显示了这样的数据:

Tite : <%# DataBinder.Eval(Container.DataItem, "title") %>
In category : <%# DataBinder.Eval(Container.DataItem, "title") %> 
// Category tite not Content title, but ASP.NET think it is Content title :-(

请帮我解决一下吗?如何在那之间分歧?

非常感谢!

3 个答案:

答案 0 :(得分:4)

您可以通过以下方式引用title Categories表格Categories.titletitle Content表格:Content.title。对不起,如果我误解了你的问题。

答案 1 :(得分:1)

在你的选择中你可以像Alan说的那样,然后使用AS来改变你之后引用它们的内容。 (我不是特别了解ASP,我是PHP程序员,但我认为它非常相似)。

这样的东西

SELECT *,Categories.title AS categoryTitle,Content.title AS contentTitle ... ...

然后你可以参考categoryTitle或contentTitle。

答案 2 :(得分:0)

我完成了它:)

SqlQuery q = new Select("*", "jos_Categories.title AS 'CatTitle'")
                         //Select("*", "CatTitle = jos_Categories.title")
                         //Select("*", "CatTitle = JosCategory.TitleColumn")
                         //.Top("1")
                         .From(JosContent.Schema)
                         .InnerJoin(JosUser.IdColumn, JosContent.CreatedByColumn)
                         .InnerJoin(JosCategory.IdColumn, JosContent.CatidColumn)
                         .Where("catid").IsEqualTo(catId);

谢谢... Google: - )