2011-08-11 35 views
2

我在問,但它誤導,很抱歉。我的問題是。之間查詢[PostgreSQL和PHP]

我有一個表的行列(rank_id,RANK_NAME,rank_min,rank_max)

很簡單,如果我想知道的只有一個等級

select * from ranks where (224 between rank_min and rank_max) 

,但如果想知道一個以上的排名,像什麼是224,338,800,等等

我可以使用

select * from ranks where (224 between rank_min and rank_max) OR (338 between rank_min and rank_max) OR (800 between rank_min and rank_max) 

但我不知道如果可能會是有簡單的方法,如使用

IN(224,338,800) 

,以及如何用PHP編寫一個查詢,不解決,我的意思是在溶液中1,採用了許多間或。

在PHP我知道,如果它是一個siple查詢像select * from等級where(224之間的rank_min和rank_max)。只是通過價值。但我不知道如果多一個值如何

任何機構都有技巧和示例如何做到這一點。我希望這個問題是不是誤導

感謝

回答

2

我有一個想法,我不知道這是不是與PHP使得查詢動態更好,但它是值得一試:

SELECT * 
FROM ranks 
INNER JOIN (SELECT unnest(ARRAY[224, 338, 800]) AS n) TT 
    ON n BETWEEN rank_min AND rank_max; 

你只需要用PHP動態創建數組,但應該比創建整個查詢容易得多。

+0

這是工作。謝謝文森特:) – Thessa

+0

Btw什麼'TT'是什麼意思? – Thessa

+0

owh得到了,它只是一個別名,我沒有提到,因爲我沒有看到'AS TT' – Thessa