Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在同一个表中查询sql select两次_Mysql_Sql - Fatal编程技术网

Mysql 在同一个表中查询sql select两次

Mysql 在同一个表中查询sql select两次,mysql,sql,Mysql,Sql,我必须在同一个表中选择两个project.project_日期,一个用于开始,一个用于结束。在表中,我有两个字段project.start=true和project.end=true用于标识它 SQL查询应该是什么样子 我试过: SELECT pz.cognome AS Cognome, (select s.presa_in_carico_data from tbl_progetto s where s.is_progetto = 1 AND

我必须在同一个表中选择两个project.project_日期,一个用于开始,一个用于结束。在表中,我有两个字段project.start=true和project.end=true用于标识它

SQL查询应该是什么样子

我试过:

SELECT 
    pz.cognome AS Cognome,
    (select s.presa_in_carico_data from tbl_progetto s where s.is_progetto = 1 AND                    
        s.cc_id_fk = cc.cc_id) as Start,
    (select e.presa_in_carico_data from tbl_progetto e where e.is_dimissione = 1 AND 
        e.cc_id_fk = cc.cc_id) as End, 
    trf.trf_note AS "Tipo trattam.",
    trf.trf_prezzou as Retta,
    COUNT(tra.trt_id) AS "N.GG." /*<-- this is normal count from date range select from user(#) */
FROM
    tbl_progetto p 
    JOIN tbl_cartellaclinica cc ON cc.cc_id = p.cc_id_fk
    JOIN tbl_paziente pz ON pz.id = cc.pz_fk_id
    JOIN tbl_distretti_sanitari di ON pz.distretto_appartenenza = di.dss_id
    JOIN tbl_trattamenti tra ON p.pr_id = tra.pr_fk_id    
WHERE
    tra.trt_data BETWEEN '2012-08-01' AND '2012-08-31' AND
    p.pr_faseriab_fk = 4
GROUP BY cc_id
更新:

为了回答您的评论,我必须再次对数据库中的情况进行假设,但我会这样做:

创建一个临时表,用于存储上述查询的结果。请参阅更改。。然后:

select p.id
       (select count(1) from Meeting m where m.date between '2012-01-01' and '2012-08-31' and m.project_id = p.id) as Count1
       (select count(1) from Meeting m where m.date between (select StartDate from #temp where ProjectId = p.id) and (select EndDate from #temp where ProjectId = p.id) and m.project_id = p.id) as count2
from Project p 
[where p.id = <something>]

到目前为止你有什么收获。你需要提供更多的细节才能得到有意义的答案。2.你应该展示你所尝试过的。表模式、示例数据、预期结果……有趣的查询,但你确定它与问题有关吗?非常感谢@Tobb我不知道如何做到这一点,因为我没有发布相同的方案来避免你对通常不必要的联接和表感到厌烦,我的问题是如何在同一个查询中对同一字段询问两次。既然我有了一个日期范围,我可以询问两次约会计数吗?约会计数范围在两个不同的日期之间?例如,从会议m中选择count meeting.id,其中m.date介于“2012-08-01”和“2012-08-31”之间。。。然后再从m.date在StartDate和EndDate之间的别名在上面的会议中选择count meeting.id。阿格曼:当然不是,这个问题很模糊,但我想我理解正确;谢谢@Tobb,一个问题,为什么是count1?1是什么?谢谢我觉得只是查询,将升级
select p.id
       (select count(1) from Meeting m where m.date between '2012-01-01' and '2012-08-31' and m.project_id = p.id) as Count1
       (select count(1) from Meeting m where m.date between (select StartDate from #temp where ProjectId = p.id) and (select EndDate from #temp where ProjectId = p.id) and m.project_id = p.id) as count2
from Project p 
[where p.id = <something>]