2013-07-16 36 views
0

我有兩個表像這些如何通過NOT IN過濾主細節表?

tblMaster 
--------- 
id title 
--------- 
1 a 
2 b 
3 c 
4 d 

tblDetail 
--------- 
dId mId 
--------- 
100 1 
100 2 
100 4 
101 1 
101 3 
102 2 
102 3 

我加入他們,我用這個查詢找到tblMaster是不具有詳細的產品ID項(1,4)

SELECT m.id, m.title FROM tblMaster m 
INNER JOINT tblDetail d on d.mId=m.id 
WHERE m.id NOT IN (SELECT d2.mId FROM tblDetail d2 WHERE d2.dId IN (1,4)) 
GROUP BY m.id, m.title 

我有很多的表格,我想像我所提到的那樣過濾它們。有沒有更簡單的方法或一般方法來做所有事情?

也...性能也很重要! 如果在Yii Activerecord中有解決方案,那就好了。

回答

1

使用外連接聯接:

SELECT m.id, m.title FROM tblMaster m 
LEFT OUTER JOIN tblDetail d on d.mId=m.id 
WHERE d.dId is null 
+0

非常感謝。我想我必須使用... ON d.mId = m.id AND d.dId IN(1,4)... –