我有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个表中选择相应的数据?相关推荐

  1. Oracle数据库查看表空间sql语句、查看Oracle数据库表空间剩余 、修改表空间、库备份

    一  Oracle数据库查看表空间sql语句 1.oracle查看表空间当前用户 SQL>  select  username,default_tablespace  from user_use ...

  2. 按主键更新另一个表oracle,SQL根据ID匹配从一个表更新到另一个表

    我相信一个连接的UPDATE FROM将有助于: MS SQL UPDATE Sales_Import SET Sales_Import.AccountNumber = RAN.AccountNumb ...

  3. mock模拟的数据能增删改查吗_如何在Vue中使用Mockjs模拟数据的增删查改

    之前一直使用json-server在前端开发时,搭建本地数据接口测试,但有时又需要将做好的项目放于 github page上做项目演示.在本地时,json server很好使用,但一旦放在github ...

  4. mysql查询cp值数据_写出创建产品销售数据库CPXS的所有表的SQL 语句。所包含的表如下:...

    [判断题]UITextView直接继承自UIScrollView类.(3.0分) [判断题]UIDataPicker是一个可以用来选择日期和时间的控件.(3.0分) [判断题]UITextField文 ...

  5. oracle两个表合并 sql,如何创建从两个表(Oracle DBMS)生成“合并”数据集的Select SQL语句?...

    我最后做了两个步骤:第一步填充事件表1中的数据,第二步合并目标(第一步中的数据集)和另一个源之间的数据.请原谅我,因为法律原因,我不得不混淆表名并省略下面代码中的一些列.下面是SQL: INSERT ...

  6. mysql连表的sql语句_sql语句之连表操作

    内连接 select * from employee inner join department on employee.dep_id = department.id 左连接 在内连接的基础上保留左表 ...

  7. sql 加一列 数字_sql语句中查询出的数据添加一列,并且添加默认值

    查询出数据,并且要添加一列表中都不存在的数据,且这一列的值都是相等的 select app_id,app_secret from wx_ticket group by app_id; 查询出的数据是 ...

  8. 股票数据尤其是从雅虎财经yahoo finance或者google finance中获取的股票数据中Adj close是什么意思?

    我们通过雅虎财经的接口获取股票日线数据的时候,经常获取的数据集内容,如下: Date日期,Open开盘价,High最高价,Low最低价,Close收盘价,Adj Close调整后的收盘价, Volum ...

  9. Fabric 账本数据块结构解析(二):如何解析账本中的配置块数据

    id:BSN_2021 公众号:BSN 研习社 作者:红枣科技高晨曦 背景:BSN公网Fabric联盟链的出现降低了使用区块链的难度,但在部分特定环境中,仍需要自己搭建Fabric环境时,了解Fabr ...

最新文章

  1. 【廖雪峰python进阶笔记】类的继承
  2. CodeSmith实用技巧(十四):使用Progress对象
  3. 让CPU占用率听你指挥
  4. Eclipse上的项目分享到GitHub
  5. 音频编码标准发展现状
  6. Python Tensorflow神经网络实现股票预测
  7. linux中vim常用命令总结
  8. java 的xml_详解Java解析XML的四种方法
  9. JS实现前端动态分页码
  10. matlab流量结构分析,科学网-分享求解“结构分解分析(SDA)”各项均值的MATLAB程序-计军平的博文...
  11. 利用JS实现点击按钮后图片自动切换
  12. 尤雨溪对 2022 Web前端生态趋势是这样看的
  13. android提权工具包,安卓手机root权限一键提权工具_kingroot PC V4.8.5 免费版
  14. 制作MIcroUSB转TTL下载器CH340
  15. 为什么称冯诺依曼为电子计算机之父,为什么说冯诺依曼是现代电子计算机之父...
  16. 自然语言处理-003NLP定义以及歧义性-学习笔记
  17. 2020年杭州社保个人最低交多少
  18. 21个令程序员泪流满面的瞬间 ...
  19. mysql数据库是一个软件呐_【MySQL数据库软件、SQL】
  20. 存储基础知识——SAN

热门文章

  1. 欧拉回路基本概念+判断+求解
  2. (01)JVM-内存三大核心区域以及分析
  3. AD Framework 单点登录
  4. 移动端touch模块
  5. (转)2-sat 专题
  6. ICCV2021 微软CMU提出TACo:同时用三个损失函数进行多模态对齐!性能SOTA!
  7. ECCV 2020 论文大盘点-自动驾驶篇
  8. X光肺炎检测竞赛上线!
  9. OpenCV vs Dlib 人脸检测比较分析
  10. TensorFlow深度自动编码器入门实践