Выбрать на 2 таблицы, которые содержат одинаковые имена полей? - PullRequest
1 голос
/ 23 мая 2009

Я разрабатываю CMS, которая использует базу данных на основе Joomla! В 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 ]

4 голосов
/ 23 мая 2009

Вы можете обратиться к таблице title из Categories по: Categories.title и таблице title из Content по: Content.title. Извините, если я неправильно понял ваш вопрос.

1 голос
/ 23 мая 2009

В своем выборе вы можете сделать, как сказал Алан, и затем использовать AS, чтобы изменить то, на что вы ссылаетесь, как позже. (Я не знаю ASP, я программист PHP, но я предполагаю, что это довольно похоже).

Что-то вроде

SELECT *, Categories.title AS, заголовок категории, Content.title, заголовок контента AS ... ...

И тогда вы можете сослаться на заголовок категории или заголовок контента.

0 голосов
/ 23 мая 2009

Я закончил это:)

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: -)

...