MySQL多对一关系


MySQL Many-to-One relationship

我很难理解这个。

我有一个包含主机的表,每个主机有十几行,还有一个包含的表,这实际上是一个包含主机时间轴信息的表。

一个宿主有许多点,这些点可以转化为宿主随时间变化的时间轴。

如何将其转换为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