通过选择查询创建RAG状态

时间:2015-02-10 16:07:41

标签: php mysql

我的查询中的下一步真的在寻求帮助。我不是开发人员,我的老板不是在我的脖子上呼吸,也不是我的工作。我只是一个初学者,一个普通人,在mySQL / PHP深渊中挣扎并寻求一些支持。我没有足够的知识或经验来解决我的问题,因此我已经在这里发布了。

到目前为止,我有:

SELECT typeName, COUNT(bedID) AS count, pRed, pAmber, pGreen, dRed, dAmber, dGreen, sRed, sAmber, sGreen
FROM bed 
JOIN hotel on hotelID = bedHotelID 
JOIN type ON typeID = bedTypeID' 
WHERE bedStatusID = 'available' AND bedHotelID = 666 
GROUP BY bedTypeID

它只带回3行,效果很好。它为我提供了按类型划分的可用床位的当前总数以及为每个床位设置的警报级别。三种床型中的每一种都有三种可能的状态'..我要做的是检查床型的当前可用性(计数)是否已经低于其三种警报级别(红色琥珀色绿色)之一。理想情况下,我想把这个状态放在一个虚拟列中,但我仍然坚持第一位......

我是否以错误的方式解决这个问题?

我是否应该在mySQL查询中执行此操作,或者我应该使用PHP来执行此操作?

希望我不会错过一些令人尴尬的简单但是如果我现在我会道歉而不是遭受论坛众神的愤怒......

更新: 感谢大卫K-J我今天学到了一些关于CASE的知识,如果这对未来的任何人有帮助,那么我的最后一个问题就是让不同的床型被分别给出了抹布状态

SELECT typeName AS bedType, COUNT(bedID) AS count,
WHEN COUNT(bedID) <= pRed   AND bedTypeID = 3 THEN 'red'
WHEN COUNT(bedID) <= pAmber AND bedTypeID = 3 THEN 'amber
WHEN COUNT(bedID) <= dRed   AND bedTypeID = 2 THEN 'red'
WHEN COUNT(bedID) <= dAmber AND bedTypeID = 2 THEN 'amber'
WHEN COUNT(bedID) <= sRed   AND bedTypeID = 1 THEN 'red'
WHEN COUNT(bedID) <= sAmber AND bedTypeID = 1 THEN 'amber'
ELSE 'green'
FROM bed 
JOIN hotel on hotelID = bedHotelID 
JOIN type ON typeID = bedTypeID' 
WHERE bedStatusID = 'available' AND bedHotelID = 666 
GROUP BY bedTypeID

像魅力一样......

1 个答案:

答案 0 :(得分:2)

尝试这样的事情(未经测试):

SELECT typeName, COUNT(bedID) AS count,
CASE
    WHEN COUNT(bedID) <= pGreen THEN 'green'
    WHEN COUNT(bedID) <= pAmber THEN 'amber'
    ELSE 'red'
END as rag
FROM bed 
JOIN hotel on hotelID = bedHotelID 
JOIN type ON typeID = bedTypeID
WHERE bedStatusID = 'available' AND bedHotelID = 666 
GROUP BY bedTypeID

rag列将显示相应的RAG状态。您可能需要调整它以适应您实施RAG系统的方式。