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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值