2012-12-25 87 views
0

我有我的MySQL數據庫的專欄的內容顯示不同的值:從數據庫字段

+-------+ 
|Status | 
+-------+ 
|  | // empty 
|  | // empty 
|Reject | 
|reject | 
+-------+ 

我對這個Status一些情況,這樣用戶就可以看到這種情況下的判斷:

  1. 如果結果Reject(自動選擇,如果項目)或reject(一些用戶編輯數據後鍵入以下)回送拒絕
  2. 如果結果empty或「接受」或「accept`回聲接受

我試試這個:

if($row['Status'] == "Reject"){ 
       echo "Reject"; 
       } 
     elseif($row['Status'] == "reject"){ 
       echo "Reject"; 
       } 
     else{ 
       echo "Accept"; 
       } 

但是,它總是迴響着Accept。導致下面的查詢的結果是empty

SELECT COUNT(Serial_number) AS n, SUM(S) AS S,SUM(A) AS A, SUM(B) AS B, SUM(C) AS C, 
     ROUND((((SUM(S)*1)+(SUM(A)*1)+(SUM(B)*0.4)+(SUM(C)*0.1))/COUNT(Serial_number)*1000000),0) AS PPM, 
     Status 
     FROM inspection_report WHERE Model LIKE 'MDV-Z700D' AND Lot_no LIKE '010A' 
     AND Line LIKE 'FA 21' AND Range_sampling ='177X0001-177X0100' GROUP BY Range_sampling 

結果:

n S A B C PPM Status 
20 0 1 0 0 50000    //this empty status make echo = Accept 

如果使用GROUP_CONCAT(Status)結果,,Reject,reject。所以,如何呼應每個條件是指上述2例?


注:我想如果這裏面列有拒絕值結果回聲拒絕,即使我有很多接受的價值。

回答

2

如果StatusNULL,你可以使用COALESCE

GROUP_CONCAT(COALESCE(Status,'Accept')) 

但如果它是一個空字符串'',利用inline IF statement

GROUP_CONCAT(if(Status = '' or Status = 'accept', 'Accept', Status)) 

UPDATE

IF(LOCATE('Reject',GROUP_CONCAT(DISTINCT if(Status = '' or Status = 'accept', 'Accept', Status))) > 0, 'REJECT', 'ACCEPT') 
+0

請看看我的其他信息。其實我只需要一個結果。我使用'GROUP_concat'只是爲了向您顯示我在列中拒絕了值。因此,如果在該列中發現拒絕,結果必須是拒絕的。 – nunu

+0

你已經提到,如果列表中有一個是「拒絕」,那麼整個結果將是「拒絕」,對吧?看到我更新的答案。另外[SQL小提琴演示鏈接](http://sqlfiddle.com/#!2/c7bcc/1) –

+0

好的,它的工作原理,但我有兩種類型的拒絕:拒絕和拒絕。如何在此查詢中提及它? – nunu