2015-02-10 58 views
0

真的在尋求下一步查詢的幫助。我不是一名開發人員,我的老闆並沒有憋住我的脖子,也沒有讓我的工作不在線上。我只是一個初學者,一個普通人,在mySQL/PHP深淵裏掙扎,尋找一些支持。我沒有知識或經驗來解決我的問題,因此我已經在這裏發佈。通過選擇查詢創建RAG狀態

到目前爲止,我有:

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來做到這一點?

但願我不是失去了一些東西embarressingly簡單,但如果我現在我會道歉,而不是受害論壇衆神的憤怒...

UPDATE: 感謝David KJ我學會了一些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 

就像一個魅力...

+0

我認爲這裏可以使用CASE語句。你可以從查詢中添加輸出嗎? – 2015-02-10 18:31:23

+0

目前,你有一個相當明顯的錯字。這可能是問題嗎? – Strawberry 2015-02-10 21:59:35

+0

@Strawberry錯別字對我來說是一種生活方式,但並不是那種讓我失望的東西。這是SQL語法和我的知識缺乏,但要求您的評論 – Filious 2015-02-10 22:40:42

回答

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系統的方式。

+0

我一直在使用CASE有點笨拙,但語法卻讓我失望。我不會因爲你所提出的建議而結束,而且在嘗試它的時候,看起來你已經解決了我在過去三天中所面對的困境。真的很感激你花時間幫助我。 – Filious 2015-02-10 22:39:00

+0

樂意幫忙^ _^ – 2015-02-10 22:40:49

+0

@Strawberry檢查出這個sql小提琴:http://sqlfiddle.com/#!2/c187f3/2/0 – 2015-02-13 08:19:17