mysql怎么五表联合查询

比如我有A,B,C,D,E五张表,我要怎么把这五张表的数据一次性查出来,并且按照这5个表的共同字段time来排序

阅读 6.5k
4 个回答

5表什么关系,1对1,1对多,多对多?

无关系:
SELECT
*
FROM
A
,B
,C,
,D
,E
ORDER BY
A.time,B.time,C.time,D.time.,E.time

1对1的关系,一般有:主键对主键:普通字段对主键

主键1对1通常描述扩展关系,比如1个身份证号可以在多个银行开户。不普通字段1对1通常是引用关系,比如身份信息中的性别

SELECT
*
FROM
A
LEFT JOIN B
ON B.id = A.id
LEFT JOIN C
ON C.id = A.id
LEFT JOIN D
ON D.id = A.id
LEFT JOIN E
ON E.id = A.id
ORDER BY
A.time,B.time,C.time,D.time.,E.time

这个简单呀,我写个给你看看,你一看就明白了,我的例子是三表查询,

$sql="select productimages.* ,product.*,class.* from productimages,product ,class where productimages.productid=product.id and product.class_id=class.id order by product.time ";        
$selsql = $pdo->prepare($sql);
$selsql->execute();

如果A,B,C,D,E 5张表的uid 都是关联的话

SELECT A.*,B.*,C.*,D.*,E.* FROM A LEFT JOIN B ON A.uid = B.uid LEFT JOIN C ON B.uid = C.uid LEFT JOIN D ON C.uid = D.uid LEFT JOIN E ON D.uid = E.uid ORDER BY A.time DESC
或者
SELECT A.*,B.*,C.*,D.*,E.* FROM A INNER JOIN B ON A.uid = B.uid INNER JOIN C ON B.uid = C.uid INNER JOIN D ON C.uid = D.uid INNER JOIN E ON D.uid = E.uid ORDER BY A.time DESC

还有你的条件如果是根据 A 来的话 ,就都用A表的 uid 来关联其它表 --ex:
SELECT A.*,B.*,C.*,D.*,E.* FROM A LEFT JOIN B ON A.uid = B.uid LEFT JOIN C ON A.uid = C.uid LEFT JOIN D ON A.uid = D.uid LEFT JOIN E ON A.uid = E.uid WHERE A.uid = xxxx ORDER BY A.time DESC

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题