2009-05-23 7 views
1

Ich entwickle ein CMS, das eine Datenbank verwendet, die auf Joomla! In Joomla db, haben wir 2 Tabelle:Wählen Sie in 2 Tabellen, die den gleichen Feldnamen enthalten?

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

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

ich eine Abfrage unten haben:

SqlQuery q = new Select("*") 
         //.Top("1") 
         .From(JosContent.Schema) 
         .InnerJoin(JosUser.IdColumn, JosContent.CreatedByColumn) 
         .InnerJoin(JosCategory.IdColumn, JosContent.CatidColumn) 
         .Where("catid").IsEqualTo(catId); 

Und in der ASPX-Seite zeige ich Daten wie folgt aus:

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

Bitte helfen ich repariere es? Wie kann man dazwischen diskezieren?

Vielen Dank!

+3

nicht select *, schlechte Praxis anwenden. – grepsedawk

Antwort

4

Sie zur title von Categories Tabelle durch verweisen: Categories.title und die title von Content Tabelle durch: Content.title. Entschuldigung, wenn ich deine Frage missverstanden habe.

1

In Ihrer Auswahl könnten Sie tun, wie Alan sagte, und dann AS verwenden, um zu ändern, was Sie später als Referenz verwenden. (Ich kenne ASP nicht besonders, ich bin ein PHP-Programmierer, aber ich nehme an, es ist ziemlich ähnlich).

So etwas wie

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

Und dann können Sie auf categoryTitle oder contentTitle beziehen.

+0

Hallo, Ich arbeitete mit PHP von 2003 bis 2007, aber jetzt interessiert mich mit ASP.NET :-) Ich kannte die Abfrage, die Sie oben gepostet, aber jetzt benutze ich SubSonic (http://subsonicproject.com, http://subsonicproject.com/querying/select-queries/) - eine Datenzugriffsschicht für .NET. Wie Sie sehen, ist die obige Abfrage nicht wie eine klassische SQL-Abfrage. Ich möchte nur wissen, wie man ein SQL in SubSonic, nicht klassisch SQL schreibt. Danke! – Shinichi

0

Ich habe es finised :)

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

Dank ... Google :-)