Выбрать в 2 таблицах, содержащих одно и то же имя поля?

StackOverflow https://stackoverflow.com/questions/901774

  •  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);

Спасибо...Погугли :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top