MySQL многие-к-одному - PullRequest
       2

MySQL многие-к-одному

2 голосов
/ 08 апреля 2011

Мне трудно понять это.

У меня есть таблица с хостами , каждая с дюжиной строк или около того, и таблица с точками , которая фактически является таблицей с информацией о временной шкале о хосте.

У хоста есть много точек, которые со временем можно перевести на временную шкалу условий этого хоста.

Как я могу перевести это в запрос SQL, который группирует x points с их соответствующими host ?

Пример:

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 голосов
/ 08 апреля 2011

Глядя на ваш пример что-то вроде

    select id, address, name, pickles,timestamp,parameter from host
 left join timeline on host.id = timeline.host_id 
order by host.id

Однако, если у хоста может быть несколько вхождений, я хотел бы увидеть пример, в котором вы, как человек, выяснили на примере данных, как им соответствовать

0 голосов
/ 08 апреля 2011

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

0 голосов
/ 08 апреля 2011

Вы можете сделать подзапрос, как

SELECT h.*, (SELECT COUNT(*) FROM points WHERE host = h.host) as points FROM hosts h
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...