2012-06-12 87 views
1

我在表tablea中找到與tableb中的記錄相關的記錄。
我使用函數IN (1)來查找tableatableb記錄1相關的記錄。我使用IN,因爲方括號中的值可能是逗號分隔的列表。如何查找具有多個關係的記錄到第二個表

我現在要做同樣的事情,但是tablea記錄應該與所有的tableb記錄有關,而不僅僅是其中的任何一個,這就是IN找到的記錄。

我可以用什麼函數代替IN來做到這一點?

這裏是我的查詢:

SELECT * 
FROM tablea 
    JOIN tablec ON tablea.id = tablec.id_local 
    JOIN tableb ON tablec.id_foreign = tableb.id 
WHERE 
    tablea.lang IN (0) 
AND tablea.page >=1 
AND tablea.page IN (8, 9, 10, 11) 
AND tableb.id = 5 
ORDER BY tablea.datetime DESC 

上述工作,

但現在tableb.id可能是幾個,如tablea記錄可以與多發tableb記錄。

SELECT * 
FROM tablea 
JOIN tablec ON tablea.id = tablec.id_local 
JOIN tableb ON tablec.id_foreign = tableb.id 
WHERE 
    tablea.lang IN (0) 
AND tablea.page >=1 
AND tablea.page 
IN (8, 9, 10, 11) 
AND tableb.id IN (5,6,7) 
ORDER BY tablea.datetime DESC 

這類作品。它發現tablea記錄與tableb記錄(5,6,7)中的任何一個有關,但是如何更改我的SQL以使其找到與所有tableb記錄(5,6和7)相關的記錄tablea

+0

能否請您發表您的當前查詢,並指出需要的字段現在匹配? –

+0

我想我現在迷路了,你介意給一些功能細節嗎?我認爲你加入了兩張桌子,但我不確定。爲了調查我需要知道你真的在做什麼,例如這些數字是什麼 – Sebas

回答

0

你沒有提到任何字段名,所以我用relatedfield作爲這兩個表之間關聯的字段名稱:

SELECT * 
FROM tablea 
    JOIN tableb ON (tablea.relatedfield = tableb.relatedfield) 
相關問題