我有两个要加入的查询
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,但它仍然没有响应
我加入了错误或只是对很多数据?我该怎么办才能得到结果?
答案 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进行分组?你为什么不用它作为索引?
也许你应该写另一个问题,解释你想要完成的事情。