MySQL Query для получения последней строки на основе категории - PullRequest
0 голосов
/ 20 сентября 2011

У меня следующая структура таблицы:

Category
-------------------
id
slug
values
category
sort


Incidents
-------------------
id
scid
title
impact
date
servicestatus
incidentsstatus
details
createdon
editedon

В таблице инцидентов у нас есть несколько записей для одной категории.scid - это идентификатор категории, который указан в таблице категории (id)

Я хочу показать все имена категорий со значением поля servicestatus из таблицы инцидентов.

Вид

Service      Status
-------    ----------
Internet     1 
Email        0
Server1      1

Пожалуйста, проверьте и посоветуйте, что мы можем с ним сделать, я попробовал это с объединением обеих таблиц на основе category.id и insidents.scid, но это показывает повторяющиеся результаты?

Спасибо!

Ответы [ 3 ]

1 голос
/ 20 сентября 2011

Используйте этот запрос:

select cat.value, ins.servicestatus from Incidents ins, category cat where ins.scid = cat.id group by cat.id;
1 голос
/ 20 сентября 2011

Если я правильно понимаю, столбец "servicestatus" будет содержать 0 или 1?или?

Если вы хотите увидеть, есть ли какие-либо "открытые" инциденты, вы могли бы сделать свой SQL, как эта

SELECT 
    c.category, max(i.servicestatus) 
FROM 
    Category as c 
INNER JOIN 
    Incidents as i ON c.id = i.scid 
GROUP BY 
    c.category

Команда MAX() sql вернет самое высокое значение из инцидентовстроки таблицы в каждой категории

\ T

0 голосов
/ 20 сентября 2011

Если вы хотите увидеть текущий статус из таблицы инцидентов, вы должны использовать что-то вроде этого:

select c.Category, i.servicestatus 
from category as c inner join incidents as i on c.id = i.scid 
where i.date = (select max(date) from incidents as i2 where i.scid = c.id)
...