Sélectionnez sur 2 tables qui contiennent même nom de domaine?
-
05-09-2019 - |
Question
Je développe un CMS que l'utilisation de la base de données basée sur Joomla! Dans db Joomla, nous avons 2 tableau:
+----------+
|Categories|
+----------+
id
title
...
+-------+
|Content|
+-------+
id
title
catid
...
J'ai une question ci-dessous:
SqlQuery q = new Select("*")
//.Top("1")
.From(JosContent.Schema)
.InnerJoin(JosUser.IdColumn, JosContent.CreatedByColumn)
.InnerJoin(JosCategory.IdColumn, JosContent.CatidColumn)
.Where("catid").IsEqualTo(catId);
Et dans la page ASPX, je montre les données comme ça:
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 :-(
S'il vous plaît aidez-moi résoudre ce problème? Comment discean entre cela?
Merci beaucoup!
La solution
Vous pouvez vous référer à la title
de table Categories
par: Categories.title
et la title
de table Content
par: Content.title
. Désolé si je mal compris votre question.
Autres conseils
Dans votre sélection, vous pouvez faire comme Alan a dit, et ensuite utiliser à changer ce que vous leur faites référence comme plus tard. (Je ne sais pas spécifiquement ASP, je suis un programmeur PHP, mais je suppose que ce assez similairement).
Quelque chose comme
SELECT *, Categories.title AS categoryTitle, Content.title AS contentTitle ... ...
Et vous pouvez alors se référer à categoryTitle ou contentTitle.
Je l'ai fini:)
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);
Merci ... Google: -)