mysql关联三个表查询

菜鸟中的小公鸡 发布于 2013/03/05 15:52
阅读 3K+
收藏 1
有三个表
a表 字段uid name img
b表 字段uid pid cid ageyear
c表 字段pid cid cname
a表 b表的uid值相同 b表 c表的pid cid值相同
目的需要查询出 name img ageyear pid.cname cid.cname 
我现在只查询出了 name img ageyear 其它pid.cname cid.cname 两个就不知道怎么查了,求助一下大伙

看我现在的查询语句

select a.name,a.img,b.ageyear from a a left join b b on b.uid=a.uid

加载中
0
溟溟
溟溟

有子查询,查出a b 表以uid为查询条件的数据之后再以pid为查询条件

0
excepiton
excepiton
select a.uid ,a.name,a.img , b.pid,b.cid,b.ageyear ,(select c.cname from c where c.pid=b.pid and c.cid=b.cid )from a left join b on (a.uid=b.uid)  
0
八宝旗
八宝旗

pid.cname cid.cname  的意思没太理解,是下面哪种还是其他意思?

意思一

pid.cname 表示相同pid对应的cname

cid.cname 表示相同cid对应的cname

意思二

pid,cid都相同时对应的cname

菜鸟中的小公鸡
菜鸟中的小公鸡
是您说的意思一,不好意思,我表达的不是很清晰。
0
魔力猫
魔力猫
如果可以的话,建议你整理一下表结构。
0
乔康007
乔康007

pid.cname cid.cname

这个是什么意思??

乔康007
乔康007
@菜鸟中的小公鸡 嗯,那两个字段分别使用子查询查出来就行了~~
菜鸟中的小公鸡
菜鸟中的小公鸡
pid.cname 表示相同pid对应的cname cid.cname 表示相同cid对应的cname
0
八宝旗
八宝旗

引用来自“八宝旗”的答案

pid.cname cid.cname  的意思没太理解,是下面哪种还是其他意思?

意思一

pid.cname 表示相同pid对应的cname

cid.cname 表示相同cid对应的cname

意思二

pid,cid都相同时对应的cname

希望能满足你的需求
select a.name,a.img,b.ageyear 
,if(b.pid=c.pid,c.cname,'') as pid_cname
,if(b.cid-c.cid,c.cname,'') as cid_cname
from a a 
left join b b on b.uid=a.uid

left join c on b.pid=c.pid or b.cid=c.cid;

潜在问题:当a:b 是1对多或者b:c是1对多,会出现重复数据,需要用having过滤重复行

返回顶部
顶部