簡體   English   中英

MySQL多對一關系

[英]MySQL Many-to-One relationship

我很難掌握這一點。

我有一個包含host的表,每個表都有十幾行,還有一個帶有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

重要提示:我也想限制此時間軸列中的條目數。

我已經為此工作了很長一段時間,希望得到一些幫助。

您可以執行類似的子查詢

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM