電子書籍の厳選無料作品が豊富!

mysql初心者です。宜しくお願い致します。
PHP+Mysqlで以下のスクリプトを組んでいます。

変数aを一旦決めておき、カウント結果次第で変数aの値を広げるというものです。
これをSQL文一発にまとめたいのですが、可能でしょうか?

mysqlのバージョンは5.1.34です。お詳しい方、ご教授お願い致します。

$a = 10; //仮に10

$query = "SELECT COUNT(*) AS cnt FROM mydb WHERE
col_a BETWEEN ( 100 - $a ) AND ( 100 + $a ) AND
col_b BETWEEN ( 100 - $a ) AND ( 100 + $a )";
$result = mysql_query($query);
$row = mysql_fetch_array($result);

if($row[cnt] < 10){$a = 20;} //件数が10件以下ならaの範囲を広げて結果取得

$query = "SELECT * FROM mydb WHERE
col_a BETWEEN ( 100 - $a ) AND ( 100 + $a ) AND
col_b BETWEEN ( 100 - $a ) AND ( 100 + $a )";
$result = mysql_query($query);

A 回答 (2件)

きっちり動くかどうか怪しいですがこんな感じで変数をつかってみては?


以下と未満は違うので注意してください

SELECT *
FROM mytable
WHERE col_a
BETWEEN ( 100 - ( @a :=(
SELECT IF(COUNT( * )>=10,10,20) AS CNT
FROM mytable
WHERE col_a
BETWEEN ( 100 - ( @b :=10 ) )
AND ( 100 + @b )
AND col_b
BETWEEN ( 100 - @b )
AND ( 100 + @b )
) ) )
AND ( 100 + @a )
AND col_b
BETWEEN ( 100 - @a )
AND ( 100 + @a )

この回答への補足

ありがとうございます。

後ほど実際に試してみます。

しかしすごい!

補足日時:2011/06/17 15:34
    • good
    • 0
この回答へのお礼

お返事遅れまして申し訳ございません。
不勉強を思い知らされました。
ありがとうございました。

お礼日時:2011/11/05 09:51

>件数が10件以下ならaの範囲を広げて結果取得



件数が10件以上の場合は、結果を取得しなくてよいということですか?

この回答への補足

お早いレスポンス、ありがとうございます。

10件以上ある場合は、$aの値はそのままで結果取得という事でございます。

補足日時:2011/06/17 09:43
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!