2014-01-08 37 views
3

相關領域PHP字段對比我在數據庫3名中的字段:與數據庫

levelOne , levelTwo, levelThree // Table Name = levels 

隨着值:

levelOne = 300, 
levelTwo = , // This field is empty 
levelThree = , // This field is empty 

現在我有具有與相應字段相比較的變量。

$var = 200; 

是$ var只應LEVELONE,不levelTwo和levelThree進行比較。依此類推

該查詢應該是什麼樣子?

領域的可能情況數據庫:

案例1:

levelOne = 300, 
levelTwo = , // This field is empty 
levelThree = , // This field is empty 

案例2:

levelOne = 500, 
levelTwo = 700, 
levelThree = , // This field is empty 

案例3:

levelOne = 500, 
levelTwo = 700, 
levelThree = 100, 

現在$ VAR應該是與最後大多數非空水平相比

實施例:

在情況1 $var應當與LEVELONE比較。

如果2 $var應該與level2相比較。

如果3 $var應該與level3比較。

基本上我有3個級別的類別。

用戶將發佈任何級別的類別的列表。

現在買家會發布他想要出價的任何類別的預設。

現在,如果他在其預設中提供了levelOne類別,它將與所有具有levelOne類別的列表匹配。

現在,如果他在預設中提供了levelTwo類別,它將與所有具有levelTwo類別的列表匹配。

現在,如果他在預設中提供了levelThree類別,它將與所有具有levelThree類別的列表匹配。

因此,這些出價將如何自動發佈在相關列表上。

這就是我的目標。

+0

並且如果完成比較,即var = 200,並且包含最後一個非空字段,那麼您期待的結果是什麼? –

+0

@FDL Bascially我無法捕捉它的邏輯 –

+0

@AhhikChakraborty它是一個過濾系統的類別,有三個級別的類別,每個提供的級別應該與它自己的數據庫級別進行比較。如果它確實有匹配,我會取得該記錄 –

回答

0

Coalesce從給定列表中選擇第一個非空值。

SELECT * FROM levels l 
WHERE :var = COALESCE(l.lelvelThree, l.levelTwo, l.levelOne); 

此查詢將按給定順序比較各個字段的字段。

+1

請不要簡單地發佈代碼。提供一些關於您的代碼的解釋或信息或用法。例如,請參閱[此答案](http://stackoverflow.com/a/16893057/756941)。 – NAZIK

+0

是的,請解釋你的代碼。因爲我想要一個邏輯 –

+1

在這裏,你去。也許我覺得太模糊不清了,對不起。 – Uriziel