테스트 사이트 - 개발 중인 베타 버전입니다

sql 도움을 부탁합니다. 채택완료

오타파파 4년 전 조회 4,008

아래처럼 데이터가 있을 경우

 

tbl name : test

 

id     min     max

1       11       20

2      21       30  

3      31       40

4      41       50

 

검색은 min과 max를 구간으로 판단해 해당구간의 id를 조회합니다.

예) 25가 검색어일 경우 검색 id는 2

 

 

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
s
sinbi Expert
4년 전

</p>

<p>$num = 25;

$sql = "SELECT * FROM test";

$res = sql_query($sql);

while($row = sql_fetch_array($res)) {

 if($row['max'] < $num) continue;

 $id = $row['id'];

 if($id) break;

}

echo $id;</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

오타파파
4년 전
답변감사합니다.
혹시 sql만을 이용한 조회방법은 없겠습니까?
s
sinbi
4년 전
제 생각엔, 불가능할 것 같습니다.
오타파파
4년 전
그렇군요.....에고고
정말 감사합니다^^

댓글을 작성하려면 로그인이 필요합니다.

 

$sql ="SELECT id FROM test WHERE $some_value_25 between min AND max"; $row = sql_fetch($sql);

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

백수1995
4년 전
님이 답 달아주셨는데 새벽이라 작성자님이 못본거 같네요 ㅎㅎ

어제 밤에 이글 보고 느꼈습니다.
PHP 개발자는 PHP 로만 해결하려고 한다는걸 ㅋㅋ

- 어설픈 풀스택 개발자 -
s
sinbi
4년 전
( ^ _______ ~) ===b 굿 !!
오타파파
4년 전
확인이 늦어 인사가 늦었네요. 감사합니다 ^O^
sql 한방으로 해결하고 싶었는데...
감사!!!감사!!!합니다.
엑스엠엘
4년 전
대용량 DB가 아니면
이렇게 하나 저렇게 하나 마찬가지죠.

댓글을 작성하려면 로그인이 필요합니다.

4년 전

설명 부족입니다

min, max가 항상 설명 처럼 (11 , 20) ~~ (91, 100) ~~ (501, 510)

이런 상황인가요?

그게 아니라면 min, max 값 등록시 어떤 규칙이라도 있는 것인가요?

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

오타파파
4년 전
min, max 값은 님이 쓰신 규칙입니다.
겹치거나하는 경우는 발생하지 안습니다.
오타파파
4년 전
답변감사합니다.
sql만으로 조회가 안될까 생각했는데
아래 sinbi님 말씀처럼 sql만으로는 포기입니다. ㅠㅠ
감사합니다.
s
sinbi
4년 전
균이 님, 방법이 더 좋네요.

$num = 25;
$stx = floor($num / 10) * 10;
$min = $stx +1;
$max = $stx + 10;
$sql ="SELECT id FROM test WHERE min = $min AND max = $max";
$row = sql_fetch($sql);
echo $row['id']; // 2

댓글을 작성하려면 로그인이 필요합니다.

4년 전

SELECT id FROM test where between 21 and 30;

으로 해보세요~

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

오타파파
4년 전
죄송합니다. 제가 설명이 부족했습니다.
검색어가 25일경우
min과 max값을 구간으로 판단해서 id값을 조회합니다.
검색어에 min과 max값은 주어지지 안습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인