创建在条件为true时添加两个值或仅获取一个值的查询

时间:2013-04-16 16:04:12

标签: mysql sql doctrine-orm doctrine

我有两张桌子,第一张

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时添加来自 table1 table2 的值 但如果日期超出范围,我只想从 table1

中获取值

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

edd 6
tom 6
emi 3

我使用doctrine和Symfony2

1 个答案:

答案 0 :(得分:1)

解决方案可能依赖于您的数据库引擎,因为不同的引擎提供不同的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 

for mysql。

您还没有充分了解您的实体为您提供特定于Doctrine的代码,但您可以使用

运行此代码
$entityManager->createQuery($sql)->execute(array($dateParam,$dateParam))```.