Php 将一个查询的结果用作另一个查询结果的子数组

Php 将一个查询的结果用作另一个查询结果的子数组,php,mysql,Php,Mysql,我几乎可以肯定我的措辞是错误的,但是我试图做的是合并两个连接表的结果,但不重复 我有两个表,events和going。我试图做的是使用一个从events中获取行的查询,然后作为子数组,列出go中具有相同EventID的所有行。比如: "1":[ { EventID: '1' EventName: 'test' Going: { UserID:'testname' UserID:'testname2' } } ] 或者可能将所有用户

我几乎可以肯定我的措辞是错误的,但是我试图做的是合并两个连接表的结果,但不重复

我有两个表,
events
going
。我试图做的是使用一个从
events
中获取行的查询,然后作为子数组,列出
go
中具有相同
EventID
的所有行。比如:

 "1":[
   {
   EventID: '1'
   EventName: 'test'
   Going: {
     UserID:'testname'
     UserID:'testname2'
     }
   }
 ]
或者可能将所有用户名放在一行中,例如
UserID:'testname','testname2'

我正在使用此查询:

"SELECT * FROM events AS ev INNER JOIN going AS go ON ev.EventID = go.EventID WHERE ev.EventID = $eventID"
我得到的结果是:

"1":[
   {
   EventID: '1'
   EventName: 'test'
   UserID:'testname'
   }
   {
   EventID: '1'
   EventName: 'test'
   UserID:'testname2'
   }
]
有没有办法删除所有重复的数据,而只是将其分组到一个子数组中

请原谅任何糟糕的编码/格式,我是一个完全的SQLNoob,但如果可能的话,我似乎找不到如何做到这一点。希望我在传达我想做的事情


提前谢谢你

一次查询无法完成此操作。您需要从events表中获取eventId及其相关数据。然后,使用eventId查询当前表,并通过编程逻辑创建所需的数组/json。

您可以这样做

选择e.EventID、e.EventName、GROUP_CONCAT(g.UserID)继续
从事件作为e内部连接到作为g
在e.EventID=g.EventID上
其中e.EventID=?
按e.EventID、e.EventName分组
输出:

| EVENTID | EVENTNAME | GOING | |---------|-----------|--------------------| | 1 | test | testname2,testname | |EVENTID | EVENTNAME |正在运行| |---------|-----------|--------------------| |1 |测试|测试名称2,测试名称| 这是一个演示

然后
explode()
在迭代结果集并生成JSON时进入



旁注:使用查询字符串插值停止。您可以使用MySQL的
组\u CONCAT
,例如:

SELECT ev.EventID, ev.EventName, GROUP_CONCAT(go.UserID) AS UserIDs
FROM events AS ev INNER JOIN going AS go ON ev.EventID = go.EventID
WHERE ev.EventID = $eventID
GROUP BY ev.EventID, ev.EventName

请看这里的工作小提琴:

我认为不能那样做。但是它可以这样做:testname,testname2如果您只使用同样可以工作的sqlname,您知道如何做吗?