繁体   English   中英

创建条件为true时将两个值相加或仅获得一个值的查询

[英]Create query who add two values when condition is true or get only one value

我有两个桌子,第一个

Table1 
ID   Name  Value    start       end         fk_table
1    edd   3     2013-03-25  2013-05-25       1 
2    tom   3     2013-03-25  2013-05-25       1
3    emi   3     2013-11-25  2013-25-25       1 

和第二张桌子

Table2
ID VALUE
1   3

我只想在start <= Date AND t.end> = Date时从table1table2添加值,但是如果日期超出范围,我只想从table1获取值

假设我们今天的日期为2013-04-16,则预期结果为

edd 6
tom 6
emi 3

我使用主义和Symfony2

该解决方案可能取决于您的数据库引擎,因为不同的引擎提供了不同的SQL扩展。 你会用

SELECT Table1.Name, Table1.Value+IF(Table1.start<=? and Table1.end>=?,Table2.VALUE,0) 
FROM Table1 
   INNER JOIN Table2 ON Table1.fk_table=Table2.ID 

对于mysql。

您尚未对实体进行足够的写作,无法为您提供特定于Doctrine的代码,但是您可以使用

$entityManager->createQuery($sql)->execute(array($dateParam,$dateParam))```.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM