gpt4 book ai didi

mysql选择主记录和多个辅助记录作为排序数据集

转载 作者:行者123 更新时间:2023-11-29 16:40:02 25 4
gpt4 key购买 nike

我有两个表:locationsevents

每个位置可以有多个事件。我成功地执行了一次查询来获取所有位置和匹配事件,但是,这些事件将作为包含所有 location 数据的合并数据集返回。我需要以某种方式将每个和所有事件列为子行,以便稍后可以正确处理它们。

此查询:

"select locations.*,events.* FROM locations,events WHERE locations.lid = events.lid AND locations.lid=1001"

返回合并数据,例如:

data [array 1]
0: lid: "1001" // location info
name: "Johns Bar"
address1: "123 Main St"
...
...
eventID: "1000" // event info
eName: "Halloween Bash"
eDate: "2018-10-31"
...
...

是否可以获取特定的 locations.lid 和所有匹配的 events.lid 并将 events 记录列为以下子集位置数据。

返回的内容如下:

data [array 1]
0: lid: "1001"
name: "Johns Bar"
address1: "123 Main St"
...
...
Events: [array 5]
0: lid: "1001"
eventID: "1000"
eName: "Halloween Bash"
eDate: "2018-10-31"
...
...
1: lid: "1001"
eventID: "1010"
eName: "Christmas Party"
eDate: "2018-12-17"
...
...
2: [lid: "1001",...]
3: [lid: "1001",...]
4: [lid: "1001",...]

最佳答案

so all matching events will always come back as part of a single returned row? Is there no way to get the secondary records to list as sub-rows/records?

是的,这就是 JOIN 的工作原理。

If not, then this will force me to do two queries...or is there another method?

不,您不必运行多个查询。

您可以在 SQL 返回结果集时获取结果集,其中包含匹配的 location 行和 event 行。确保在 SQL 查询中按位置排序。

然后,当您获取结果行时,跟踪客户端应用程序中变量中的“当前”位置。如果您获取一行并且其位置与您之前看到的位置相同,则忽略它。

伪代码:

sql = SELECT ... FROM location JOIN event ... ORDER BY location
execute sql
location = nil
while row = fetch():
if row[location] != location:
print location
end if
location = row[location] # for next time
print event
end while

这是处理 SQL 结果集的常见模式。

关于mysql选择主记录和多个辅助记录作为排序数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53397056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com