我有两张table: locations
以及 events
每个位置可以有多个事件。我成功地执行了一个查询来获取所有位置和匹配的事件,但是,这些事件将作为一个合并的数据集与所有 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
列为 location
数据。
返回的结果是:
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",...]
1条答案
按热度按时间5kgi1eie1#
所以所有匹配的事件总是作为一个返回行的一部分返回?是否无法将辅助记录列为子行/记录?
是的,连接就是这样工作的。
如果没有,那么这将迫使我做两个查询…或者有其他方法吗?
不,您不必运行多个查询。
当sql返回结果集时,您可以获取结果集,并使用匹配的对
location
以及event
排。一定要分类location
在sql查询中。然后在获取结果行时,跟踪客户端应用程序中变量的“当前”位置。如果您获取一行,并且它的位置与您以前看到的位置相同,则忽略它。
伪代码:
这是处理sql结果集的常见模式。