一个数据库多对多关系表关联查询的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 17:34:01
现在有三张表:P、T、PT(关系表)
表中数据如下:
表P
c_p
------
a
b
c
表T
c_t
--------
1
2
3
表PT(关系表)
c_p c_t c_pt
---------------
a 3 X
c 1 Y
a 1 Y

检索条件为:列出表P中c_p列所有的记录对应的表T中的记录情况,并且表PT中列c_pt的值必须为X
我希望检索出来的结果为:
c_p c_t
----------
a 3
b
c

请教高手如何写这个SQL
回答弓gong:
结果希望有b,c项,是因为希望查询出表P的c_p列“所有值”,并查看与c_p列关联的表T的c_t列的数据。

回答 弓gong 和 奔驰M888
不好意思,最后的结果中c_t列应该是表T的。是我没写清楚
p.c_p t.c_t
----------
a 3
b
c

select p.c_p,pt.c_t from p left join pt on p.c_p=pt.c_p and pt.c_pt='X';

***补充:*******
你说的这个可以办到,但是我看不出有什么意义。
时间关系我只说说方法了,望见谅。
1、先关联t表和pt表(可以先建一个临时视图)
2、再在关联的基础上用上面的sql,只不过把pt表换成1中关联的结果。
****************

--
以上,希望对你有所帮助。

SELECT c_p,c_t from pt join pt on p.c_p=pt.c_p join t on pt.c_t=t.c_t
where c_pt=x;
另外你希望的结果怎么会还有b ,c项,有点自我矛盾吧