如何查询涉及多个多对多关系的位置

时间:2012-05-18 09:02:22

标签: mysql many-to-many

我有几张表有以下关系: -

publications->id name  
categories->id name
types->id name
program->id name

出版物可以有许多类别,许多类型和许多程序。同样,每个出版物都有许多出版物。因此,发布表与这些表中的每一个都有很多关系。 因此,我为每个表创建了关联表,并将以下三个表放在上面以连接上述每个

pub_cat ->publicationid categoryid
pub_type->publicationid typeid
pub_prog->publicationid programid

现在我必须找到所有出版物的名称,例如categoryid = 2,typeid = 2和programid = 1

我对这些复杂的查询非常了解,我们将非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你应该看一下你加入所有表的连接,并在where子句中说明你想要找到的内容。一个例子可能是:

SELECT * FROM t1 LEFT JOIN (t2, t3, t4)
             ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)
WHERE t2.a = 1;

这只是这里MySQL Refeerence

的一个例子

答案 1 :(得分:0)

好的,我刚刚解决了这个问题。谢谢@ eggyal,@ raphael

select id,title,pub_cat.catid,pub_prog.progid,pub_type.typeid from publications
inner join pub_cat on publications.id=pub_cat.pubid
inner join pub_prog on publications.id=pub_prog.pubid inner join pub_type
on publications.id=pub_type.pubid where pub_type.typeid=6 and pub_cat.catid=7
and pub_prog.progid=1;