2011-08-11 37 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