Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有4个表但显示多行的SQL查询_Sql_Sql Server_Sql View - Fatal编程技术网

具有4个表但显示多行的SQL查询

具有4个表但显示多行的SQL查询,sql,sql-server,sql-view,Sql,Sql Server,Sql View,为我的基本问题道歉,我的头脑一片空白,出于某种原因,我无法用我的一生来思考我做了什么 好的,我有四张桌子 dbo.loanunits(包含所有贷款单位,包括入/出和loanid状态) dbo.loanunits2(其中包含有关贷款单位的额外信息,包括客户id和loanid) dbo.loantrans(其中包含loanunits的事务,即输入和输出状态的历史记录。还包括发出项目的loanid) dbo.customers(包含客户id和客户名称) 这是我的剧本: SELECT

为我的基本问题道歉,我的头脑一片空白,出于某种原因,我无法用我的一生来思考我做了什么

好的,我有四张桌子

  • dbo.loanunits
    (包含所有贷款单位,包括入/出和loanid状态)

  • dbo.loanunits2
    (其中包含有关贷款单位的额外信息,包括客户id和loanid)

  • dbo.loantrans
    (其中包含loanunits的事务,即输入和输出状态的历史记录。还包括发出项目的loanid)

  • dbo.customers
    (包含客户id和客户名称)

  • 这是我的剧本:

    SELECT     
        dbo.loanunits.loan_id, dbo.loanunits.loan_name, 
        dbo._loanunits.loan_status, dbo.customers.customername
    FROM         
        dbo.loanunits 
    INNER JOIN
        dbo.loantrans ON dbo.loanunits.loan_id = dbo.loantrans.loan_tranunitid 
    INNER JOIN
        dbo.loanunits2 ON dbo.loantrans.loan_id = dbo.loanunits2.loan_id   
    INNER JOIN
        dbo.customers ON dbo.loanunits2.customer_account_code = dbo.customers.customer_account_code
    WHERE     
        (dbo.loanunits.loan_status = 'out')
    

    我目前正在获取交易表中的结果数,但我应该只获取贷款单位中的唯一值,因为我只希望看到客户的贷款单位以及他们与谁在一起。

    我看不到贷款单位表的任何用途,因此您可以将其删除

    SELECT     
        dbo.loanunits.loan_id, dbo.loanunits.loan_name, 
        dbo._loanunits.loan_status, dbo.customers.customername
    FROM         
        dbo.loanunits 
    /*INNER JOIN
        dbo.loantrans ON dbo.loanunits.loan_id = dbo.loantrans.loan_tranunitid */
    INNER JOIN
    /*    dbo.loanunits2 ON dbo.loantrans.loan_id = dbo.loanunits2.loan_id   */
        dbo.loanunits2 ON dbo.loanunits.loan_id = dbo.loanunits2.loan_id   
    INNER JOIN
        dbo.customers ON dbo.loanunits2.customer_account_code = dbo.customers.customer_account_code
    WHERE     
        (dbo.loanunits.loan_status = 'out')
    

    另外,你可以很容易地使用
    DISTINCT
    关键字。

    我认为你只需要在结尾处抛出一个
    分组,它就结束了。我有点困惑,为什么你必须加入
    loantrans
    。这真的是从
    loanunits
    loanunits2
    的唯一途径吗?不幸的是,是的,我希望有另一种方式!:(糟糕……在任何情况下,请将
    分组按dbo.loanunits.loan\u id、dbo.loanunits.loan\u名称、dbo.\u loanunits.loan\u状态、dbo.customers.customername
    放在末尾,您应该从查询中获得不同的记录。选择后可以使用“distinct”