1 votes

Sélectionner sur 2 tables qui contiennent le même nom de champ ?

Je développe un CMS utilisant une base de données basée sur Joomla ! Dans la base de données Joomla, nous avons 2 tables :

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

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

J'ai une question à poser :

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

Veuillez m'aider à le réparer ? Comment faire la différence entre les deux ?

Merci beaucoup !

4voto

Alan Haggai Alavi Points 34260

Vous pouvez vous référer à la title de Categories table par : Categories.title y el title de Content table par : Content.title . Désolé si j'ai mal compris votre question.

1voto

Boushley Points 1360

Dans votre sélection, vous pourriez faire comme Alan l'a dit, et ensuite utiliser AS pour changer ce que vous référencez comme plus tard. (Je ne connais pas spécifiquement ASP, je suis un programmeur PHP mais je suppose que c'est assez similaire).

Quelque chose comme

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

Et ensuite, vous pouvez vous référer à categoryTitle ou contentTitle.

0voto

daisy Points 697

Je l'ai finalisé :)

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X