Выбрать в 2 таблицах, содержащих одно и то же имя поля?
-
05-09-2019 - |
Вопрос
Я разрабатываю CMS, которая использует базу данных на основе Joomla!В базе данных Joomla у нас есть 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 :-(
Пожалуйста , помогите мне это исправить ?Как отличить это друг от друга ?
Большое спасибо !
Решение
Вы можете обратиться к title
из Categories
таблица по: Categories.title
и тот title
из Content
таблица по: Content.title
.Извините, если я неправильно понял ваш вопрос.
Другие советы
В вашем select вы могли бы сделать, как сказал Алан, а затем использовать AS, чтобы изменить то, как вы будете ссылаться на них позже.(Я конкретно не знаю ASP, я PHP-программист, но я предполагаю, что это довольно похоже).
Что - то вроде
ВЫБЕРИТЕ *, Categories.title В КАЧЕСТВЕ categoryTitle, Content.title В КАЧЕСТВЕ contentTitle ......
И тогда вы можете обратиться к categoryTitle или contentTitle.
Я доработал это :)
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);
Спасибо...Погугли :-)