2011-08-11 15 views
2

私は尋ねていましたが、誤解を招いていましたので、残念です。私の問題はです。質問と回答[PostgreSQLとPHP]

私は唯一のランク

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

を知っているが、複数のランクを知りたい場合は、どのようにしたい場合は

は単純で、テーブルのランク(rank_id、rank_name、rank_min、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) 

を使用することができますが、私は可能性がある場合知りません簡単な方法が修正されていないPHPでクエリを書くこと

IN(224,338,800) 

とどのように使用するように、そこにあることが、私はOR間に多く使用して、解決策1を意味します。

PHPで私はそれがselect * like ranpleks where rank(rank_minとrank_maxの間の224)のようなsipleクエリであるかどうかを知っています。値を単にpasします。しかし、私はどのように複数の値がある場合は知りません

どのような体はトリックとそれを行う方法を持っています。私はこの質問は私が考えていた

おかげ

答えて

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

関連する問題