這樣的事情甚至可以做到嗎?對於我試圖製作的應用程序,用戶可以爲單個聯繫人輸入多個(或不包含)電子郵件,電話號碼和地址,但是在前向頁面上,我只想顯示第一個電話號碼,電子郵件地址和每個聯繫人的地址(如果有的話)。如何從所有列中只選擇一行,但是第一個
下面是檢索數據我的SQL查詢(請注意,它已經稍微修改了可讀性在實踐中,我不是一個cookie查詢SQL):
SELECT TC.FirstName + ' ' + TC.LastName AS FullName, TCE.EmailAddress, TCPN.PhoneNumber, TCA.[Address] + ", " + TCA.City + ', ' + TCA.[State] + ', ' + TCA.ZipCode AS FullAddress, TC.Notes
FROM TContacts AS TC
INNER JOIN TContactEmails AS TCE ON TCE.ContactID = TC.ContactID
INNER JOIN TContactPhoneNumbers AS TCPN ON TCPN.ContactID = TC.ContactID
INNER JOIN TContactAddresses AS TCA ON TCA.ContactID = TC.ContactID
INNER JOIN TUserContacts AS TUC ON TUC.ContactID = TC.ContactID
INNER JOIN TUsers AS TU ON TU.UserID = TUC.UserID
WHERE TU.UserName = userCookie.Values["UserName"]
期望的結果將是類似於使用SELECT TOP 1
而不是僅僅使用SELECT
,但是我不能那樣做,因爲那樣它只會顯示第一個聯繫人(FullName)。我需要查看每個姓名,但不是每個FullAddress,PhoneNumber或EmailAddress。
以下信息適用於是否存在與SQL查詢無關的其他解決方案。
此SQL查詢正在使用ASP.NET和C#代碼並通過ADO.NET命令調用的網頁中。一旦查詢被調用,所有使用的表被加載到一個DataAdapter對象中並用於動態填充一個ListView。下面是該代碼(的SQLStatement省略,因爲它本質上是上面列出):
SqlConnection conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["CPDM_NightingaleAConnectionString"].ConnectionString);
SqlCommand comm = new SqlCommand(sqlStatement, conn);
comm.CommandType = CommandType.Text;
comm.Connection = conn;
conn.Open();
SqlDataAdapter dataAdapter = new SqlDataAdapter(comm);
DataSet ds = new DataSet();
dataAdapter.Fill(ds, "TUsers, TUserContacts, TContactAddresses, TContactPhoneNumbers, TContactPhoneNumbers, TContactEmails, TContacts");
lvContacts.DataSource = ds.Tables[0];
lvContacts.DataBind();
conn.Close();
爲ListView的ASP.NET代碼動態地創建基於該值的表,像這樣:
<asp:ListView ID="lvContacts" runat="server">
<ItemTemplate>
<tr>
<td><asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Eval("FullName") %>' /></td>
<td><asp:LinkButton ID="LinkButton2" runat="server" Text='<%# Eval("EmailAddress") %>' /></td>
<td><asp:LinkButton ID="LinkButton3" runat="server" Text='<%# Eval("PhoneNumber") %>' /></td>
<td><asp:LinkButton ID="LinkButton4" runat="server" Text='<%# Eval("FullAddress") %>' /></td>
<td><asp:LinkButton ID="LinkButton5" runat="server" Text='<%# Eval("Notes") %>' /></td>
</tr>
</ItemTemplate>
</asp:ListView>
這絕不是像這樣的功能的最優雅的實現,但就目前而言,我不是我使用的任何工具的專家。任何有關這個話題的幫助將不勝感激。
作爲一個附錄,如果有人碰巧知道如何在SQL SELECT語句的中間添加一個換行符,它將在轉換爲HTML時顯示,這對組織FullAddress非常有用。 CHAR(10) + CHAR(13)
的確看起來毫無價值。
至於換行符,最好將您的SQL語句中的地址分隔開,並使用'<%#Eval(「Address」)+ Environment將其在鏈接按鈕代碼中分解。 NewLine + Eval(「City」)+「,」+ Eval(「State」)+「」+ Eval(「ZipCode」)%>' –