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,您知道如何做吗?