我很难理解这个。
我有一个包含主机的表,每个主机有十几行,还有一个包含点的表,这实际上是一个包含主机时间轴信息的表。
一个宿主有许多点,这些点可以转化为宿主随时间变化的时间轴。
如何将其转换为SQL查询,将x 点与其各自的主机分组?
例子:
Host:
id:1
address: 123.456.7.8
name: FooBar
pickles: The good kind
timeline:
Point:
host_id:1
timestamp: 123456
parameter: 123
Point:
host_id:1
timestamp: 123456
paramter:456
重要提示:我还想限制这个时间轴列的条目数量。
我已经为这个问题纠结了很长一段时间了,如果能得到一些帮助,我会很感激的。
你可以做像
这样的子查询SELECT h.*, (SELECT COUNT(*) FROM points WHERE host = h.host) as points FROM hosts h
看看你的例子
select id, address, name, pickles,timestamp,parameter from host
left join timeline on host.id = timeline.host_id
order by host.id
但是,如果主机可以有多个出现,我希望看到一个示例,其中您作为人类已经从示例数据中计算出如何匹配它们
select * from hosts right join timeline where host.id = timeline.host_id
将返回所有与主机信息在同一行的点。
您可以使用GROUP BY子句和COUNT函数根据host_id进行聚合并获得点数:
select count(host_id), hosts.id from hosts right join timeline where host.id = timeline.host_id group by host.id