php - mysql怎么五表联合查询
怪我咯
怪我咯 2017-04-11 09:01:11
[PHP讨论组]

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(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

PHPz

前面几个回答我也是服了。。这个问题需求都不明确,问题本身就有问题,你们还能一本正经的写出这些优秀的答案。/qiang

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号