在我的查询的下一个步骤中,真的在寻找帮助。我不是一个开发人员,我的老板没有给我压力,我的工作也没有危险。我只是一个初学者,一个普通的家伙,挣扎在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,我今天学到了一些关于凯斯的知识,如果这对未来的任何人有帮助的话,这里是我的最后一个查询,允许不同类型的床被给予不同的抹布状态。
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很有魅力..。
发布于 2015-02-10 21:56:27
尝试这样的方法(未经测试):
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抹布栏将显示适当的抹布状态。您可能需要调整它,以适应您如何实现您的抹布系统。
https://stackoverflow.com/questions/28436281
复制相似问题