表1
id rid topid
1 1001 101
2 1002 102
3 1003 103
4 1004 104
5 1005 104
6 1006 104
表2
id tid url
1 1004 /uploads/1.jpg
2 1005 /uploads/2.jpg
3 1006 /uploads/3.jpg
4 1007 /uploads/4.jpg
5 1008 /uploads/5.jpg
6 1009 /uploads/6.jpg
表3
id aid url
1 1 /uploads/sm1.jpg
2 1 /uploads/sm2.jpg
3 1 /uploads/sm3.jpg
4 2 /uploads/sm4.jpg
5 2 /uploads/sm5.jpg
6 2 /uploads/sm6.jpg
这是一个栏目查询,本人想通过表1给的topid=104为参数,查询出在表2全部子栏目的图片路径以及子栏目在表3对于的三张图片,相当于最后是四个图片一个组合,怎么弄,请教。
id rid topid
1 1001 101
2 1002 102
3 1003 103
4 1004 104
5 1005 104
6 1006 104
表2
id tid url
1 1004 /uploads/1.jpg
2 1005 /uploads/2.jpg
3 1006 /uploads/3.jpg
4 1007 /uploads/4.jpg
5 1008 /uploads/5.jpg
6 1009 /uploads/6.jpg
表3
id aid url
1 1 /uploads/sm1.jpg
2 1 /uploads/sm2.jpg
3 1 /uploads/sm3.jpg
4 2 /uploads/sm4.jpg
5 2 /uploads/sm5.jpg
6 2 /uploads/sm6.jpg
这是一个栏目查询,本人想通过表1给的topid=104为参数,查询出在表2全部子栏目的图片路径以及子栏目在表3对于的三张图片,相当于最后是四个图片一个组合,怎么弄,请教。
解决方案
80
select
aa.topid,
GROUP_CONCAT(aa.url) as url
from
(
select
distinct
a.topid,
表3.url as url
from
表1 as a
left join 表2 as b on a.topid=b.tid
left join 表3 as c on b.id=c.aid
where a.topid=104
union all
select
distinct
a.topid,
表2.url as url
from
表1 as a
left join 表2 as b on a.topid=b.tid
where a.topid=104
) as aa
group aa.topid
aa.topid,
GROUP_CONCAT(aa.url) as url
from
(
select
distinct
a.topid,
表3.url as url
from
表1 as a
left join 表2 as b on a.topid=b.tid
left join 表3 as c on b.id=c.aid
where a.topid=104
union all
select
distinct
a.topid,
表2.url as url
from
表1 as a
left join 表2 as b on a.topid=b.tid
where a.topid=104
) as aa
group aa.topid
20
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx … 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。