如何查找与第二个表有多个关系的记录

时间:2012-06-12 13:01:58

标签: mysql database

我正在查找表tablea中与tableb中的记录相关的记录 我使用函数IN (1)来查找与tablea记录1相关的tableb记录。我使用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记录(5,6,7)相关的tableb条记录,但是如何更改我的SQL以便找到与tablea相关的记录所有tableb条记录(5,6和7)?

1 个答案:

答案 0 :(得分:0)

您没有提及任何字段名称,因此我使用relatedfield作为两个表之间相关的字段名称:

SELECT *  
FROM tablea 
    JOIN tableb ON (tablea.relatedfield = tableb.relatedfield)