连接表与.net时没有响应

时间:2012-12-19 02:34:39

标签: .net mysql join

我有两个要加入的查询

SELECT b.nickname,count(a.doctor_id) 
FROM a_table a 
join b_table b 
on (a.doctor_id=b.id_user) 
GROUP BY a.doctor_id

SELECT   doctor_id, SUM(medicine) medicine, SUM(radiology) radiology,sum(lab) lab, sum(act) act
FROM     (
  SELECT   MAX(doctor_id) doctor_id,
           SUM(IF(pm='F', cost, NULL)) medicine,
           SUM(IF(pm='R', cost, NULL)) radiology,
           SUM(IF(pm='L', cost, NULL)) lab,
           SUM(IF(pm='P', cost, NULL)) act
  FROM     c_table
  GROUP BY Trans_No
) t
GROUP BY doctor_id

我已经尝试加入

SELECT   b.nickname, count(a.doctor_id), SUM(medicine) medicine, SUM(radiology) radiology,sum(lab) lab, sum(act) act
FROM     (
  SELECT   MAX(doctor_id) doctor_id,
           SUM(IF(pm='F', cost, NULL)) medicine,
           SUM(IF(pm='R', cost, NULL)) radiology,
           SUM(IF(pm='L', cost, NULL)) lab,
           SUM(IF(pm='P', cost, NULL)) act
  FROM     c_table
  GROUP BY Trans_No
) t
join a_table a on (a.doctor_id=t.doctor_id)
join b_table b on (a.doctor_id=b.id_user)
GROUP BY a.doctor_id

所有这些表都有大量数据(超过200万个数据),我已经设置了我的CommandTimeout = 600,但它仍然没有响应

我加入了错误或只是对很多数据?我该怎么办才能得到结果?

1 个答案:

答案 0 :(得分:0)

这不是答案,但评论时间太长了。

您的查询没有意义。我想你需要再看一下这个问题。第一个查询:

SELECT b.nickname,count(a.doctor_id) 
FROM a_table a 
join b_table b 
on (a.doctor_id=b.id_user) 
GROUP BY a.doctor_id
除非doctor_id为NULL,否则

总是将为count(a.doctor_id)返回1。这是因为您正在对该列进行分组。你的意思是为每位医生计算每个昵称的医生数量或昵称的数量吗?

第二个查询中的子查询也没有多大意义:

SELECT   MAX(doctor_id) doctor_id,
         SUM(IF(pm='F', cost, NULL)) medicine,
         SUM(IF(pm='R', cost, NULL)) radiology,
         SUM(IF(pm='L', cost, NULL)) lab,
         SUM(IF(pm='P', cost, NULL)) act
FROM     c_table
GROUP BY Trans_No

为什么要对trans_no进行分组?你为什么不用它作为索引?

也许你应该写另一个问题,解释你想要完成的事情。