合并两个sql查询选择并计数

合并两个sql查询选择并计数,sql,Sql,您好,我有两个sql查询,我想合并它们 问题1: Select TableA.Name, TableB.Date from TableA, TableB where ID = ID_used; 问题2: SELECT count(Date) FROM (SELECT DISTINCT Date FROM TableA, TableB group by Date; 我试过: Select TableA.Name, TableB.Date from Tabl

您好,我有两个sql查询,我想合并它们

问题1:

Select TableA.Name, TableB.Date
from TableA, TableB
where ID = ID_used;
问题2:

SELECT count(Date)
FROM  (SELECT DISTINCT Date
       FROM TableA, TableB
       group by Date;
我试过:

  Select TableA.Name, TableB.Date
  from TableA, TableB
  where ID=ID_used inner join (SELECT count(Date)
                               FROM (SELECT DISTINCT Date
                                     FROM TableA, TableB
                                     group by Date)
但它在联合查询中给出了语法错误

我需要的结果是:姓名、计数结果

有什么想法吗

测试数据:

    TableA
    ---------------------
    Name            ID
    ---------------------
    John           1001
    Peter          1002

    TableB
    -----------------------
    Date            ID_used
    -----------------------
    2015.05.01.AM   1001
    2015.05.01.AM   1001
    2015.05.01.AM   1002
    2015.05.01.PM   1001
    2015.05.01.PM   1001
    2015.05.01.PM   1002
    2015.05.01.PM   1002
    2015.05.02.PM   1002
结果必须是:

    John       2
    Peter      3

在列名之前使用tablename

Select TableA.Name,TableB.Date from TableA, TableB where ID=ID_used;

据我所知,你需要的是这样的东西: 虽然我不确定,因为您没有添加测试数据和预期结果

选择t1.名称,t2.日期, 选择countdate 从中选择不同的日期 从表A到表B 按日期分组为日期计数 来自表1 加入表B t2 在t1.ID=t2.ID\u上使用

更新:我想这就是你想要的:

编辑:我在ms access 2010中尝试了以下操作:

注意:我无法使用关键字Date作为列名,因此改为mydate

select t1.id, t1.name, count(t2.mydate) as datecount
FROM TableA t1,
 (SELECT Distinct id_used,mydate
FROM TableB) t2
WHERE  t1.id = t2.id_used
GROUP by t1.id,t1.name
这是可行的,但我不建议在没有join或on关键字的情况下使用join,因此这里有一个可读性更好且也有效的方法:

select t1.id, t1.name, count(t2.mydate) as datecount
FROM TableA t1
INNER JOIN (
SELECT Distinct id_used,mydate
FROM TableB) t2
ON t1.id = t2.id_used
GROUP by t1.id,t1.name

这将返回表A中每个名称的表B中不同日期的计数:

Select a.Name, COUNT(DISTINCT b.Date)
from TableA AS a JOIN TableB AS b
ON ID=ID_used
group by a.Name


你能展示一些数据和预期结果吗?查询2在执行GROUP BY之前生成一个交叉联接。在总共有多少个目标日期的情况下,结果中的每一行是否需要相同的结果?提示:计数和计数。数字必须匹配!我想计算列中每个名字的日期。计数很有效,但只是为了一个名字。这就是我尝试合并的原因。最终目标是将结果提交给listJeremy C。目标是获得ID的每个名称/不同日期。。我将编辑这个问题,并给出一些示例数据。谢谢。但是sql测试在“From”语法中写了一些错误,可能在子查询中,您在发布子查询之前测试过它吗?它返回数据了吗?你可以设置一些测试数据吗?我只是阅读了你的编辑,这可能不是你需要的。你的测试数据清楚地表明,我的答案是无用的,它实际上可能比我想象的更简单。2015.05.01.AM是字符串格式,因为-如果日期小于12,那么数据将是2015.05.01.AM。12-14:00之间禁止进入。在这段时间之后,数据将是2015.05.01.PM,我可以更轻松地处理入口,我不需要从2015.05.01转换。00-12:00至2015.05.01.AM。这将如何解决原始问题?甚至不谈论使用旧式连接,在where条件和其他问题中不使用别名。在编辑他的问题之前,我将我的建议发布在了上。现在我的答案是不相关的,因为问题被更改了..是的,他是对的,我的问题第一次是错的Syntax error在查询表达式'countdistinct b'中缺少运算符。date‘会有什么问题?@Zoltan:MS Access不支持不同的聚合,请尝试Jeremy C.的答案instead@Zoltan:你的Access版本是什么?@Zoltan:似乎Access需要内部关键字:-dnoeth-Jeremy C对内部联接的回答是有效的,但对名称的回答是无效的,因为聚合。你知道我怎么也能得到这个名字吗?
Select a.Name, COUNT(DISTINCT b.Date)
from TableA AS a JOIN TableB AS b
ON ID=ID_used
group by a.Name