从SQL Server中“内部联接”下返回的行中获取名称值

时间:2012-11-27 02:31:58

标签: asp.net .net

我在ASP.Net页面中使用了一些存储过程。我经常使用行号或引号之间的行名称,但我找不到按名称访问内连接表的方法:

    Dim conn As New SqlConnection("my_connection_string")
    Dim mycommand As New SqlCommand("last_played_songs", conn)
    mycommand.CommandType = CommandType.StoredProcedure
    mycommand.Parameters.AddWithValue("@userid", userid)
    conn.Open()
    Dim dr As SqlDataReader = mycommand.ExecuteReader()
    While dr.Read()

        /* What I have: */
        Dim artist_image As String = dr(39) & "" & "/cover.jpg"      

        /* What I want. Let's say I called my table ArtistProfile under inner join: */
        Dim artist_image As String = dr("ArtistProfile.uniqueID") & "/cover.jpg"

   End While

似乎使用内连接使用的名称不是很好的语法,但我找不到如何命名它以便能够访问'内连接'表。数字索引的问题在于,如果4-5个连接表结构中的一个发生更改,则所有索引都在变化。

1 个答案:

答案 0 :(得分:2)

对存储过程中的字段名称进行别名以获得所需的输出

select 
  TableA.Name as 'TableA.Name',
  TableA.Age as 'TableA.Age',
  TableB.Address as 'TableB.Address'
from
  TableA INNER JOIN TableB ON TableA.ID = TableB.ID

-- Example using table alias in SQL
select 
  a.Name as 'TableA.Name',
  a.Age as 'TableA.Age',
  b.Address as 'TableB.Address'
from
  TableA a INNER JOIN TableB b ON a.ID = b.ID

列的默认名称是fieldname本身,因此在您的示例中,它应该只是dr(“uniqueID”)