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 27393 게시물 읽기
No. 27393
4개의 테이불 조인후 정열
작성자
김동명(gola43)
작성일
2008-02-15 20:21
조회수
3,170


report _table

+-------+--------------+---------+------------+

| r_id  | r_barcode    | r_price | r_date     |

+-------+--------------+---------+------------+

|  4637 | 210129265101 |  220000 | 2006-09-20 |

|  5662 | 210129265101 |  200000 | 2006-11-24 |

|  5822 | 210129265101 |  190000 | 2006-12-04 |

|  8507 | 210129265101 |  160000 | 2007-05-25 |

| 10932 | 210129265101 |  107000 | 2007-11-15 |

+-------+--------------+---------+------------+


piece_table

+-------+--------------+---------+------------+-----------+

| p_id  | p_barcode    | p_price | p_date     | min_price |

+-------+--------------+---------+------------+-----------+

|  4688 | 210129265101 |       0 | 2006-09-20 |    260000 |

|  7289 | 210129265101 |       0 | 2006-11-24 |    210000 |

|  7668 | 210129265101 |       0 | 2006-12-04 |    190000 |

|  8073 | 210129265101 |       0 | 2006-12-27 |    180000 |

| 11688 | 210129265101 |       0 | 2007-05-25 |    210000 |

| 12478 | 210129265101 |       0 | 2007-07-15 |    160000 |

| 15618 | 210129265101 |       0 | 2008-01-25 |    150000 |

| 16077 | 210129265101 |       0 | 2008-01-25 |    |

+-------+--------------+---------+------------+-----------+


us_report _table

Empty set


us_piece_table

Empty set



4개의 테이블을 조인하려 합니다.


select r_price,usr_price,p_price,min_price,usp_price,usmin_price from report

left JOIN us_report on (report.r_barcode = us_report.usr_barcode)

left JOIN piece on (report.r_barcode = piece.p_barcode)

left JOIN us_piece on (report.r_barcode = us_piece.usp_barcode)

where r_date <= '2008-02-15' and r_barcode = '210129265101' order by r_date DESC limit 1 


이렇게 조인을 하니

+---------+-----------+---------+-----------+-----------+-------------+

| r_price | usr_price | p_price | min_price | usp_price | usmin_price |

+---------+-----------+---------+-----------+-----------+-------------+

|  107000 |      NULL |       0 |    260000 |      NULL |        NULL |

+---------+-----------+---------+-----------+-----------+-------------+

이렇게 나옵니다.


제가 구하고자 하는게 각각의 테이블에서 가장 높은 날짜의 price를 가져 와야합니다.


r_price는 가장 높은날짜의 price를 가져오고


min_price 가 260000 이아닌 150000 으로 나와야 하는데...


그래서


order by r_date DESC limit 1 부분을 order by r_date,p_date DESC limit 1 로 변경하니 정열이 맞는것 같은데.


order by r_date DESC limit 1 부분을 order by r_date,p_date,usr_date,usp_date DESC limit 1 로하니

다시 원점이네요..


 

도대체 정렬을 어떻게 해야하는지 혹은 조건이 틀렷는지 알수가 없습니다.


서브쿼리를 해야하는지 아니면 조인으로 해결이 가능하지..


머리가 터지겠습니다.


이러다 주말 반납해야하는 상황이 올것 같습니다.

이 글에 대한 댓글이 총 1건 있습니다.

음.. report테이블에서 가장 큰 날짜를 기준으로 나머지 테이블을 조인하는데 그중 가장 큰 값들을 가져오는 것이 맞나요?


order를 쓰지 않으셔도 max로 가져오실 수 있을 듯 한데요.


select r_price, max(usr_price), max(p_price), max(min_price), max(usp_price), max(usmin_price)

from report

left JOIN us_report on (report.r_barcode = us_report.usr_barcode)

left JOIN piece on (report.r_barcode = piece.p_barcode)

left JOIN us_piece on (report.r_barcode = us_piece.usp_barcode)

where r_date <= '2008-02-15' and r_barcode = '210129265101'


group by r_barcode (이게 기준이 맞는지..)


order by r_date DESC limit 1


대충 이런 식이면 ... 되지 않을라나요.

정진원(wormkid)님이 2008-02-19 22:02에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27397wait_timeout 이 비정상적으로 동작 문의
이권
2008-02-19
2413
27396postgres -> mysql 이전시....
이진우
2008-02-19
2385
27395#sql_4aab_0.MYD 임시테이블 문의드립니다. [1]
쭈니쏘리
2008-02-19
2738
273934개의 테이불 조인후 정열 [1]
김동명
2008-02-15
3170
27392ndbcluster테이블 덤프시 auto_increment값?
dba
2008-02-15
2740
27391유니코드 변환에 따른 문제점을 알려주세요
아전사
2008-02-13
3346
27390[질문]당일,주간,한달 을 각각 조건으로 한번에 쿼리문을 만들고 싶습니다. [1]
한별이
2008-02-13
3189
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다