我目前正在开发一个允许您借钱的系统。事情是为了发放贷款,您必须通过所需的贷款,或者必须在您的银行账户中存入更多金额。
以下是存款的架构
tbl_fxd_dep :
fxid | amount
1 10,000
2 15,000.01
3 20,000.01
以下是员工存入金额的架构
tbl_employee :
empid | amount
1 15,100.01
正如您所看到的那样,员工存款金额不等于15,000.01
和20,000.01
,而是等于这些金额之间
这是我的sql语句
Select
empid, fname, mname, lname, st, prv, city, cnt, fxid
from
emp as e
inner join
fd as f on e.amount >= f.amount
and e.amount <= f.amount
where
uname = @user and pwd = @pwd
这是我创建的内部联接语句问题是,每当我尝试使用用户帐户和密码登录时,它都不会查询用户的个人资料,我尝试删除此部分and e.amount <= f.amount
{{ 1}}提取的是fxid
,而不是在这种情况下1
显示它应属于的fxid
,有人可以为我提供此问题的替代解决方案
谢谢你,感谢你们给予的任何努力......
答案 0 :(得分:1)
您的加入条件中存在非常严重的逻辑缺陷 - 即,因为在任何给定时间只考虑一行,唯一的值可以小于或等于 x 和根据定义,大于或等于 x 等于 x 。这就是marc_s在评论中试图指出的:你所使用的标准并不是你所想的那样。您可以非常快速地完成此操作,因为您拥有一个小数据集:只需将15000.01
的文字值e.amount
替换为fxid
,然后查看数据。
您看起来想要的是获得给定员工有资格获得的最高SELECT
empid
,fxid = MAX(fxid)
FROM
emp AS e
INNER JOIN fd AS f
ON e.amount <= f.amount
WHERE
uname = @user AND
pwd = @pwd
GROUP BY
empid
(旁注:为什么是员工而不是客户?)。您可以使用以下查询执行此操作:
fxid
SQL Server将采用此查询和
M1
。