2009-05-23 9 views
1

Je développe un CMS utilisant une base de données basée sur Joomla! Dans db Joomla, nous avons 2 Table:Sélectionnez sur 2 tables qui contiennent le même nom de champ?

+----------+ 
|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 aider je le réparer? Comment discerner entre ça?

Merci beaucoup!

+3

Ne pas utiliser select *, une mauvaise pratique. – grepsedawk

Répondre

4

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

1

Dans votre sélection, vous pouvez faire comme Alan a dit, puis utilisez AS pour changer ce que vous les référence 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 vous pouvez alors se référer à categoryTitle ou contentTitle.

+0

Salut, J'ai travaillé avec PHP de 2003 à 2007, mais maintenant je suis intéressé par ASP.NET :-) Je connaissais la requête que vous avez posté ci-dessus, mais maintenant j'utilise SubSonic (http://subsonicproject.com, http://subsonicproject.com/querying/select-queries/) - un Data Access Layer pour .NET. Comme vous le voyez, la requête que j'ai posté ci-dessus n'est pas comme une requête SQL classique. Je veux juste savoir comment écrire un SQL dans SubSonic, pas SQL classique. Merci! – Shinichi

0

Je finised it :)

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

Questions connexes