【问题标题】:How do I add another JOIN statement in my query?如何在查询中添加另一个 JOIN 语句?
【发布时间】:2016-01-12 13:45:41
【问题描述】:

我有一个 .aspx 页面,上面有一个 gridview 项目。 gridview 最初使用以下查询正确显示:

CommandText = "SELECT AnalyticsHub_Requests.*, 
    AnalyticsHub_StatusCodes.ShortDescription AS StatusText 
    FROM AnalyticsHub_Requests 
    LEFT JOIN AnalyticsHub_StatusCodes 
    ON (AnalyticsHub_Requests.StatusId=AnalyticsHub_StatusCodes.Id) 
    WHERE AnalyticsHub_Requests.StatusId IN (4,6)";

我想显示来自另一个表的更多信息,以便列出分配给请求的人员。我正在尝试这样:

CommandText = "SELECT AnalyticsHub_Requests.*, AnalyticsHub_StatusCodes.ShortDescription 
               AS StatusText 
               FROM AnalyticsHub_Requests 
               LEFT JOIN AnalyticsHub_StatusCodes 
               ON (AnalyticsHub_Requests.StatusId=AnalyticsHub_StatusCodes.Id) 
               WHERE AnalyticsHub_Requests.StatusId IN (4,6) , AnalyticsHub_Assignees.* 
              LEFT JOIN AnalyticsHub_Requests 
              ON (AnalyticsHub_Assignees.AssigneeId=AnalyticsHub_Requests.AssigneeId) 
              WHERE AnalyticsHub_Requests.AssigneeId IN (1,2,3,4,5,6)";

当我试图让它显示受让人信息时,什么都不会显示。如何让它在表格中显示受让人信息?

【问题讨论】:

    标签: sql asp.net gridview


    【解决方案1】:

    您的 SQL 语法有几个地方是错误的。我从您的查询中了解到,您希望 AnalyticsHub_RequestsLEFT JOINAnalyticsHub_StatusCodesAnalyticsHub_AssigneesLEFT JOINAnalyticsHub_Requests。您可以通过此 SQL 来完成。

    SELECT AnalyticsHub_Requests.*, AnalyticsHub_StatusCodes.ShortDescription AS StatusText, 
        AnalyticsHub_Assignees.* 
    FROM 
        AnalyticsHub_Requests 
    LEFT JOIN 
        AnalyticsHub_StatusCodes 
            ON (AnalyticsHub_Requests.StatusId=AnalyticsHub_StatusCodes.Id) 
    RIGHT JOIN
        AnalyticsHub_Assignees
            ON (AnalyticsHub_Assignees.AssigneeId=AnalyticsHub_Requests.AssigneeId) 
    WHERE  AnalyticsHub_Requests.StatusId IN (4,6)
        AND
    AnalyticsHub_Requests.AssigneeId IN (1,2,3,4,5,6)
    

    【讨论】:

    • 谢谢你,因为我觉得它帮助我更接近实现预期的结果,但是我仍然无法让它显示任何东西。您认为可能是什么问题?
    • 如果不查看所有 3 个表的一些示例数据和您的预期输出,很难做出假设。
    • @Brad 首先,在您的 SQL Server 或您拥有的其他工具中执行此查询。并查看结果
    • @Brad 一个可能的原因是因为 RIGHT JOIN,但这只是我的意见。您应该首先执行您的查询
    • 我不确定如何使用 SQL Server,但我在 Access 中复制了表。在 Access 中,查询现在完美检查,所以我假设我的 aspx 页面(团队项目)中有一个隐藏的部分阻止我的网格正确显示信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-16
    • 2017-06-05
    • 2016-02-01
    • 1970-01-01
    相关资源
    最近更新 更多