您好我有用户和交易表,下面是这些表的结构。
用户表
用户名,transactioncode是字段
交易表
rolename,transactioncode是字段
我必须从User表获取用户名,事务代码,并且这两个字段的组合应该是不同的,并且应该从事务表中获取该特定事务代码的rolename计数。
以下是我的查询返回错误的计数:
select u.username,u.transactioncode,count(t.rolename)
from user u,transaction t
where u.transactioncode=t.transactioncode
group by u.username,u.transactioncode;
答案 0 :(得分:1)
首先使用正确的显式join
语法,其他使用distinct
select u.username,u.transactioncode,count(distinct t.rolename) roles
from user u
inner join transaction t on u.transactioncode=t.transactioncode
group by u.username, u.transactioncode;
另外,您也可以使用子查询
select username, transactioncode,
(select count(distinct rolename) from Transaction
where transactioncode = u.transactioncode) as roles
from user u;
但是,distinct
在这里可能是多余的,但我不知道你的表是什么样子以及进入的是什么数据。
您还可以先与join
表
user
select u.username, u.transactioncode, t.roles
from (select transactioncode, count(distinct rolename) roles
from Transaction t
group by transactioncode) t
inner join user u on
u.transactioncode = t.transactioncode;
答案 1 :(得分:-1)
请试试这个
select u.username,u.transactioncode,count(t.rolename)
from user u inner join transaction t
on u.transactioncode=t.transactioncode
group by u.username,u.transactioncode;
答案 2 :(得分:-1)
da = New OleDbDataAdapter("Select * from HAPostingHighAmount where User='" & txtUser.Text & "' UNION ALL Select * from LAPostingLowAmount where User='" & txtUser.Text & "'", con)