求教一个基础的mysql多表联合查询的问题:如何限制某张表中只查一条数据

再看我一眼 2013-02-20 04:23:22
需求是这样的:从a表查图片,同时联合b表查图片的图片集名称,联合c表查图片的评论

现在只想得到从c表得到一条记录,该如何写?

现在的语句大概是这样的 select a.*,b.name,c.* from a as a left join b as b on a.pid =b.pid left join c as c on a.pid = c.pid where a.pid = XXX

但是这样查出来的结果是有多少条评论,就有多少条数据,该如何修改?

另求分析一条sql语句出来与查完A表用php foreach循环来查b c 再拼接到一起,效率相差大不大

只有20分了~~~
...全文
750 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayayad 2013-02-20
  • 打赏
  • 举报
回复
第二个问题 如果你的数据库中索引合适的话 当然是联查效率高 想下一个只需要连接一次数据库,一个至少要连接3次,但他们要实现的数据确是一样的
一起混吧 2013-02-20
  • 打赏
  • 举报
回复
后面连上: group by c.pid
ayayad 2013-02-20
  • 打赏
  • 举报
回复
limit 1不行吗 或者用group by c.主键
hechuanchuan 2013-02-20
  • 打赏
  • 举报
回复
按照现在这种情况其实也可以的 按照pid排序,在程序里判断是否是下一个pid,懂我意思不? sql的话看楼下还有没有更好的解决方案
再看我一眼 2013-02-20
  • 打赏
  • 举报
回复
引用 2 楼 hechuanchuan 的回复:
分开查也可以,第一步只关联 a、b表 他们是1对1关系 和 C表是一对多关系,直接关联肯定会查出来多条记录 所以可在第二步是根据图片id 查出评论内容
恩 我明白这种情况 所以想问的就是只用一条sql语句的话能否实现
hechuanchuan 2013-02-20
  • 打赏
  • 举报
回复
分开查也可以,第一步只关联 a、b表 他们是1对1关系 和 C表是一对多关系,直接关联肯定会查出来多条记录 所以可在第二步是根据图片id 查出评论内容
再看我一眼 2013-02-20
  • 打赏
  • 举报
回复
上边说的不准确,现在是有n张图片,每个图片有cx条评论就有c1+c2+c3+...+cn条记录 不想要这样的 就想要n条

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧