0

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 つが変更されると、すべてのインデックスが変更されることです。

4

1 に答える 1

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

列のデフォルト名はフィールド名自体であるため、例では単に dr("uniqueID") にする必要があります

于 2012-11-27T03:04:20.703 に答える