MySQL多对一关系

时间:2011-04-08 13:11:39

标签: php mysql pdo

我很难抓住这个。

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

主持人有很多分,可以随着时间的推移转换为主持人条件的时间轴。

如何将其转换为将x 与各自主机分组的SQL查询?

示例:

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

重要提示:我还想限制此时间轴列中的条目数。

我一直在研究这个问题很长一段时间了,我会感激一些帮助。

3 个答案:

答案 0 :(得分:0)

您可以执行

之类的子查询
SELECT h.*, (SELECT COUNT(*) FROM points WHERE host = h.host) as points FROM hosts h

答案 1 :(得分:0)

看一下像

这样的例子
    select id, address, name, pickles,timestamp,parameter from host
 left join timeline on host.id = timeline.host_id 
order by host.id

但是,如果一个主机可能有多次出现,我想看一个例子,你作为一个人从例子数据中得出如何匹配它们

答案 2 :(得分:0)

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