database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27404 게시물 읽기
No. 27404
3개의 테이블 조인및 제어해서 출력 할려면 어떻게 해야 합니까?
작성자
작성일
2008-02-20 17:49
조회수
2,741

*region 테이블
+--------------------------------------------------------------+
| id  | r_ name | r_mp       | r_type | rm_type | r_area | ...............+
| 40  | 한양      | member  | g        |              |   1      |...............+


*tb_current 테이블 
+-----------------------------------------------------------------+
| id    | mc_id | mc_current | mc_latecurrent | mc_gap | mc_date     |
| 256  |  377    | 35.000        |  33.000             | 2,000     | 2008-02-10  |  


*tb_merchandise 테이블
+------------------------------------------------------------------+
| id   | bg_id  |  bg_type  | rm_type  |  mc_name  | r_path1 | .............+
| 377 | 40      |  g            |              |   한양주중   |   0        |.............+
 
등이 있읍니다. 
region 테이블은 한양이란 곳에 대한 정보를 기록하는것이고, tb_current 테이블은 가격을 입력 하는 것입니다. 그리고 
tb_merchandise 테이블은 한양의 시세이름을 기록 하는 것입니다.

여기서 제가 나타내고자 하는것은 위 3개의 테이블을 이용해서 변동값이 0인것을 제외한 나머지를 나타나게 하는 것이지요//
예를 들면....

한양   3000 ▲ 200
한양1  3002 ▼ 200

등.. 변동폭이 없는것만 나타내지 않게 할려고 하고 싶습니다. 어떻게 해야하는지요...
즉 상승종목과 하락종목만 나타내기

이 글에 대한 댓글이 총 4건 있습니다.
select a.r_name, decode(sign(mc_current-mc_latecurrent), 1, '상승', '하락'), mc_current-mc_latecurrent from
region a, tb_current b, tb_merchandise c
where a.id=40 and a.id=c.bg_id and c.bg_id=b.mc_id and 0 != (b.mc_current-b.mc_latecurrent)
and b.mc_date between a and b;

이런식으로 하면 되지 안을까 해서 적어봅니다.
toyga님이 2008-02-20 19:35에 작성한 댓글입니다. Edit

decode 는 오라클 전용이네요 쓰고 보니까 case when then을 쓰셔야 할듯

toyga님이 2008-02-20 19:41에 작성한 댓글입니다. Edit

짐 보시는 sql문은 상승.하락,변동없음등이 나타내는 것입니다. 여기서 어디부분을 고쳐야 하는지요?...
맨땅에 해딩한지 5개월이 넘어 가네요...책을봐도 모르겟고 고수님들의 많은 도움 바랍니다.
---------------------------------------------------------------------------------

<?  $count_chk = 0;
     $sql_current     = "SELECT a.id, a.mc_name, a.bg_id FROM tb_merchandise a WHERE a.bg_type = '$code' GROUP BY a.bg_id ORDER BY   a.mc_name ASC   ";
  $result_current = mysql_query($sql_current);
  $count_chk    = mysql_affected_rows();

//---  echo "$sql_current -> $count_chk <br>";

      if( $count_chk < 10) $count_chk = 10;
      for($i = 0; $i < $count_chk; $i++){
         $row = mysql_fetch_row($result_current);
    
    $c_row = mysql_fetch_array(mysql_query(" select   mc_current , mc_gap, mc_latecurrent   from tb_current where mc_id = '$row[0]'  order by mc_date desc limit 1 "));
    
    $current = (int)$c_row[0];    
    $current = number_format($c_row[0],"0");
                $gap = str_replace("-","",$c_row[1]);
                if( (int)$c_row[1]  >= 0){
       if( (int)$c_row[1]  == 0){
       $gap = " - ";
      //  $gap = "  ";
       }else{
              $gap = "<font color=red >▲ $gap </font>";
       }
    }else{
         $gap = "<font color=blue >▼ $gap </font>";
    }

?>
                     <tr>
                      <td width="200" height="1" colspan="3" bgcolor="#CBCBCB"></td>
                  </tr>
                  <tr onMouseover="highlight(this,'#DBEBFA')" onMouseout="highlight(this,'')">
 <td  width="<?=$width11 ?>" height="20" align="left" style="padding-top:2px;">&nbsp;<a href="<?=$target_page ?>?id=<?=$row[2] ?>"    target="main" ><?=$row[1]?></td>
                      <td  width="<?=$width22 ?>" align="right" style="padding-top:2px;"><b><?=$current ?></b></td>
                      <td  width="<?=$width33 ?>" align="center" style="padding-top:2px;"><?=$gap?></td>
                  </tr>
 
<? } ?>                 
---------------------------------------------------------------------------------------------

등이 문입니다... 위 소스를 바탕으로 출력했을시 나오는 출력문은 

+--------------------------------+
+   이름   |   현제 가격     |   변동폭+
+--------------------------------+
+   한양   |    5000           |  ▲500   +
+--------------------------------+
+  서울    |    4000           |  ▼300   +
+--------------------------------+
+  대전    |    3000           |   -       + <----변동폭이 없을 경우 이름 가격 변동차 등 안나오게..
+--------------------------------+
+ 남서울  |   4000            | ▼300    +
+--------------------------------+
이런 형식으로 출력 합니다...
제가 출력하고자 하는것은  상승종목과 하락 종목만 나타내고 십습니다..
제발 도와 주세요....위 sql문에서 어디부분을 고쳐야 하는지요.........

시스템 환경은 웹호스팅이며  php-버젼 4.4.4
                                        서버는  리눅스
                                        mysql-버젼 4.0.27 입니다.

김남훈(gomdole)님이 2008-02-21 13:26에 작성한 댓글입니다.

소스보니까..
 if( (int)$c_row[1]  >= 0){
       if( (int)$c_row[1]  == 0){
       $gap = " - ";
      //  $gap = "  ";
       }else{
              $gap = "<font color=red >▲ $gap </font>";
       }
    }else{
         $gap = "<font color=blue >▼ $gap </font>";
    }

여기부분 좀만 손보시면 되겠네요..

 if( (int)$c_row[1]  >= 0){
       if( (int)$c_row[1]  == 0){
       $gap = " - ";<=== 여기를 continue; 이걸루 바꾸면...
      //  $gap = "  ";
       }else{
              $gap = "<font color=red >▲ $gap </font>";
       }
    }else{
         $gap = "<font color=blue >▼ $gap </font>";
    }

저렇게 하면 변동사항이 없을때는 웹상에 뿌려지지 않고 걍 통과하겠죠..^^;

사승기(rusifer)님이 2008-02-22 13:55에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27408MySQL-nt 시작시 발생되는 오류 [3]
아스라다
2008-02-22
2971
27407OS 프롬프트 [1]
김영진
2008-02-21
2479
27406replication 문제 [2]
김영진
2008-02-21
2942
274043개의 테이블 조인및 제어해서 출력 할려면 어떻게 해야 합니까? [4]
2008-02-20
2741
27403MySQL 5.0 에서 다국어 사용
MYKIM
2008-02-20
2677
27402간단한 쿼리문 질문인데요.. [3]
송경선
2008-02-20
3001
27400만료된 로그 삭제 [1]
김영진
2008-02-20
2538
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다