我有三个桌子。一种带有客户数据,一种带有文档,另一种带有图像。 如果文档或图像表中存在多个文档,则返回多行。我只需要返回一行。 我的应用程序中的表格行具有将其定向到每个客户ID的图像和文档页面的链接,因此在select语句中包括文档和图像文件名非常重要。 问题是同一客户ID会显示多行,因为每个客户都存在多个文档/图像。分组依据似乎对我没有帮助,因为我仍然可以获得多行。
Customer ID | Title | Documents Link | Images Link
----------------------------------------------------
Sam Tucker | Salesman | Link | Link
Sam Tucker | Salesman | Link | Link
Sam Tucker | Salesman | Link | Link
SELECT DISTINCT Customer.CustomerID, Customer.Title, Documents.FileName, Images.FileName
FROM Customer
LEFT JOIN Documents
ON Customer.CustomerID = Documents.CustomerID
LEFT JOIN Images
ON Customer.CustomerID = Images.CustomerID
这是我在select语句中需要文件名的原因。如果文件名不存在,则该链接将不可见。另外,该链接不是指向文件的实际链接,而是显示多个文件的模式。
<asp:LinkButton ID="Documents" runat="server" Text="Link" Click="MyMethod" CommandArgument='<%# Eval("CustomerID") %>' Visible='<%# string.IsNullOrEmpty(Eval("Documents.FileName").ToString()) ? false : true %>'></asp:LinkButton>
<asp:LinkButton ID="Images" runat="server" Text="Link" OnClick="MyMethod2" CommandArgument='<%# Eval("CustomerID") %>' Visible='<%# string.IsNullOrEmpty(Eval("Images.FileName").ToString()) ? false : true %>'></asp:LinkButton>
如何只返回一行?
答案 0 :(得分:3)
您可以使用GroupBy
和MAX
来获得所需的结果。
SELECT Customer.CustomerID, Customer.Title, MAX(Documents.FileName),
MAX(Images.FileName)
FROM Customer
LEFT JOIN Documents ON Customer.CustomerID = Documents.CustomerID
LEFT JOIN Images ON Customer.CustomerID = Images.CustomerID
GROUP BY Customer.CustomerID, Customer.Title