php选择数据表,PHP SQL,一次从3个表中选择相应的数据?
我有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提供两行(一个主要,一个辅助),并以逗号分隔列表的名称.
标签:sql,php
来源: https://codeday.me/bug/20191210/2098819.html
php选择数据表,PHP SQL,一次从3个表中选择相应的数据?相关推荐
- Oracle数据库查看表空间sql语句、查看Oracle数据库表空间剩余 、修改表空间、库备份
一 Oracle数据库查看表空间sql语句 1.oracle查看表空间当前用户 SQL> select username,default_tablespace from user_use ...
- 按主键更新另一个表oracle,SQL根据ID匹配从一个表更新到另一个表
我相信一个连接的UPDATE FROM将有助于: MS SQL UPDATE Sales_Import SET Sales_Import.AccountNumber = RAN.AccountNumb ...
- mock模拟的数据能增删改查吗_如何在Vue中使用Mockjs模拟数据的增删查改
之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...
- mysql查询cp值数据_写出创建产品销售数据库CPXS的所有表的SQL 语句。所包含的表如下:...
[判断题]UITextView直接继承自UIScrollView类.(3.0分) [判断题]UIDataPicker是一个可以用来选择日期和时间的控件.(3.0分) [判断题]UITextField文 ...
- oracle两个表合并 sql,如何创建从两个表(Oracle DBMS)生成“合并”数据集的Select SQL语句?...
我最后做了两个步骤:第一步填充事件表1中的数据,第二步合并目标(第一步中的数据集)和另一个源之间的数据.请原谅我,因为法律原因,我不得不混淆表名并省略下面代码中的一些列.下面是SQL: INSERT ...
- mysql连表的sql语句_sql语句之连表操作
内连接 select * from employee inner join department on employee.dep_id = department.id 左连接 在内连接的基础上保留左表 ...
- sql 加一列 数字_sql语句中查询出的数据添加一列,并且添加默认值
查询出数据,并且要添加一列表中都不存在的数据,且这一列的值都是相等的 select app_id,app_secret from wx_ticket group by app_id; 查询出的数据是 ...
- 股票数据尤其是从雅虎财经yahoo finance或者google finance中获取的股票数据中Adj close是什么意思?
我们通过雅虎财经的接口获取股票日线数据的时候,经常获取的数据集内容,如下: Date日期,Open开盘价,High最高价,Low最低价,Close收盘价,Adj Close调整后的收盘价, Volum ...
- Fabric 账本数据块结构解析(二):如何解析账本中的配置块数据
id:BSN_2021 公众号:BSN 研习社 作者:红枣科技高晨曦 背景:BSN公网Fabric联盟链的出现降低了使用区块链的难度,但在部分特定环境中,仍需要自己搭建Fabric环境时,了解Fabr ...
最新文章
- 【廖雪峰python进阶笔记】类的继承
- CodeSmith实用技巧(十四):使用Progress对象
- 让CPU占用率听你指挥
- Eclipse上的项目分享到GitHub
- 音频编码标准发展现状
- Python Tensorflow神经网络实现股票预测
- linux中vim常用命令总结
- java 的xml_详解Java解析XML的四种方法
- JS实现前端动态分页码
- matlab流量结构分析,科学网-分享求解“结构分解分析(SDA)”各项均值的MATLAB程序-计军平的博文...
- 利用JS实现点击按钮后图片自动切换
- 尤雨溪对 2022 Web前端生态趋势是这样看的
- android提权工具包,安卓手机root权限一键提权工具_kingroot PC V4.8.5 免费版
- 制作MIcroUSB转TTL下载器CH340
- 为什么称冯诺依曼为电子计算机之父,为什么说冯诺依曼是现代电子计算机之父...
- 自然语言处理-003NLP定义以及歧义性-学习笔记
- 2020年杭州社保个人最低交多少
- 21个令程序员泪流满面的瞬间 ...
- mysql数据库是一个软件呐_【MySQL数据库软件、SQL】
- 存储基础知识——SAN