2011-09-20 74 views
0

的基础上最后一排我有以下表结构:MySQL查询用于获取

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


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

在事件表中,我们有一个单一类型的多个条目。 scid是表类别(id)中给出的类别ID

我想从事件表中显示所有具有servicestatus字段值的类别名称。

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

请检查并建议我们可以用它做什么,我想它在category.id和insidents.scid的基本两表之间的连接,但其显示重复结果?

谢谢!

+0

检查这些问题/回答:http://stackoverflow.com/questions/7233757/order-within-group - by –

+0

http://stackoverflow.com/questions/4668902/mysql-group-by-to-display-latest-result –

+0

http://stackoverflow.com/questions/755918/simple-query-to-grab-max -VALUE换每个-ID –

回答

1

使用此查询:

select cat.value, ins.servicestatus from Incidents ins, category cat where ins.scid = cat.id group by cat.id; 
1

如果我理解正确,列“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

如果你想看到从事件表的当前状态,你应该使用这样的事情:

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)