PHP SQL,一次从3个表中选择相应的数据?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP SQL,一次从3个表中选择相应的数据?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1453字,纯文字阅读大概需要3分钟。
内容图文
![PHP SQL,一次从3个表中选择相应的数据?](/upload/InfoBanner/zyjiaocheng/880/3c0e402a219f4f13b9eb4501c063fe32.jpg)
我有3张桌子,“ u”,“ d”,“ s”
‘u’有
>用户ID
>分
‘d’有
>分
> divname
的有
>名称
> primaryuserid
> secondaryuserid
现在我想做的是显示一个表格,其中包含以下格式的行
> userid,divname,sname
另外,找出一种方法来解密此sname表的用户ID是主要用户还是辅助用户.
我可以使用左联接显示userid和divname,但是我不知道如何添加第三个表?更棘手的是,每个用户ID可以有1个以上的名称,最多约20个.有没有一种方法可以显示0-20个名称,具体取决于用户ID,并用逗号分隔?
我目前拥有的是just和u和d表彼此对应.
SELECT
e.userid,
e.divid,
d.divname
FROM
e
LEFT JOIN d ON (e.divid = d.id)
ORDER BY e.userid
解决方法:
您正在这里寻找一些不同的东西.首先,可以使用MySQL的GROUP_CONCAT()函数完成“根据用户ID显示0-20个名称的方式,以逗号分隔”,因此您的查询将如下所示(主要和次要之间没有区别):
SELECT u.userid,
d.divname,
GROUP_CONCAT(s.sname SEPARATOR ', ') AS "snames"
FROM u
LEFT JOIN d ON d.divid = u.divid
LEFT JOIN s ON (s.primaryuserid = u.userid OR s.secondaryuserid = u.userid);
现在,为了能够区分用户是主要用户还是次要用户,您必须要有一点点幻想.我可能会用工会这样做,例如:
SELECT u.userid,
d.divname,
GROUP_CONCAT(s.sname SEPARATOR ', ') AS "snames",
'Primary' AS "category"
FROM u
LEFT JOIN d ON d.divid = u.divid
LEFT JOIN s ON s.primaryuserid = u.userid
UNION ALL
SELECT u.userid,
d.divname,
GROUP_CONCAT(s.sname SEPARATOR ', ') AS "snames",
'Secondary' AS "category"
FROM u
LEFT JOIN d ON d.divid = u.divid
LEFT JOIN s ON s.secondaryuserid = u.userid
这将为每个用户ID提供两行(一个主要,一个辅助),并以逗号分隔列表的名称.
内容总结
以上是互联网集市为您收集整理的PHP SQL,一次从3个表中选择相应的数据?全部内容,希望文章能够帮你解决PHP SQL,一次从3个表中选择相应的数据?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。