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 로하니
다시 원점이네요..
도대체 정렬을 어떻게 해야하는지 혹은 조건이 틀렷는지 알수가 없습니다.
서브쿼리를 해야하는지 아니면 조인으로 해결이 가능하지..
머리가 터지겠습니다.
이러다 주말 반납해야하는 상황이 올것 같습니다.
|