具有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”