2015-04-07 84 views
0
table1 
---+--------- 
id | value 
---+--------- 
1 | (NULL) 
2 | 'string' 
3 | (NULL) 

table2 
---+----------- 
id | table1_id 
---+----------- 
1 | 3 

我可以得到我的结果通过执行MYSQL - 加入不同的条件(为null与is not null)表,而工会

select table1.id from table1 where table1.value is not null 
union 
select table1.id from table1 right join table2 on table1.id=table2.table1_id 

所以我需要得到的是

---+-- 
id | 
---+-- 
2 | 
3 | 

但我不能使用工会,因为我应该使用yii1.1 CDbCriteria不支持工会 我试过不同的连接类型,但没有结果。

回答

2

你可以写你的查询使用LEFT这样JOIN:

SELECT table1.id 
FROM 
    table1 LEFT JOIN table2 
    ON table1.id=table2.table1_id 
WHERE 
    table1.value IS NOT NULL 
    or table2.table1_id IS NOT NULL 

,因为你用的是LEFT JOIN,table2.table1_id将为空当连接不会成功。

+0

很酷,它的工作原理!谢谢! –

0

为什么你需要一个连接所有,这个简单的查询应该这样做:

从表1,其中值不为空或ID

选择ID(选择从表2 不同table1_id)