2015-04-07 22 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)