두개의 테이블에서 날짜 비교 후 제일 나중에 있는 값이 있는 테이블의 값을 어떻게 구할까요?
어떻게 설명을 해야 될지 참 난감하지만 질문 드립니다.
A와 B테이블이 있습니다.
ID로 검색 해서 나중의 데이터가 있는 테이블의 값을 구하려고 하는데 도저희 모르겠어서 여쭤봅니다.
예를 들어
A Table
| 머니 | 날짜 | 아이디 |
| 10000 | 2021-03-06 12:00:00 | aaa |
| 10000 | 2021-03-06 11:00:00 | bbb |
| 10000 | 2021-03-06 09:00:00 | aaa |
| 10000 | 2021-03-06 08:00:00 | bbb |
B Table
| Money | dateTime | 아이디 |
| 5000 | 2021-03-06 11:00:00 | aaa |
| 5000 | 2021-03-06 11:50:00 | bbb |
| 5000 | 2021-03-06 10:00:00 | aaa |
| 5000 | 2021-03-06 07:00:00 | bbb |
와 같은 경우 조건 아이디를 aaa로 했을 경우 값은 A테이블의 맨 상단머니
bbb의 값은 B테이블의 두번째행 을 구하려고 합니다.
이럴 때는 쿼리를 어떻게 짜야 가능할까요?
나중에는 그 값들의 SUM을 구하려고 합니다.
알려주시면 정말 감사드리겠습니다. ㅠㅠ
답변 6개
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
시간이 없어 테이블을 새로 만들어서 입력 해서 원하는 결과를 도출 했습니다. 답변 감사드립니다.
댓글을 작성하려면 로그인이 필요합니다.
테이블 a 와 테이블 b에서 userId 가 aaa이고 date가 가장 최근인 레코드의 money 값
select money from a, b
where a.userId = b.userId
and a.userId = 'aaa'
and date == (select max(date) from a, b where a.userId = b.userId and a.userId= 'aaa' group by userId)
댓글을 작성하려면 로그인이 필요합니다.
원하시는 목표를 설명하시는 것이 질문 내용을 이해하기 쉬울 수 있습니다.
https://stackoverflow.com/questions/12102200/get-records-with-max-value-for-each-group-of-grouped-sql-results" rel="nofollow noreferrer noopener" target="_blank">https://stackoverflow.com/questions/12102200/get-records-with-max-value-for-each-group-of-grouped-sql-results
group by user_id했을 때 다른 컬럼의 값이 최고인 row를 뽑는 sql입니다.
SELECT a.*
FROM `tblA` a
LEFT JOIN `tblB` b
ON a.userid = b.userid AND a.dateTime < b.dateTime
WHERE b.dateTime is NULL
최대값(날짜)가 tblA에 있는지 tblB에 있는 모르니까
위 query에서 join 순서를 바꾸어서 한 번 하면 되지 않을까요?
댓글을 작성하려면 로그인이 필요합니다.
select money from aaa where userId = 'aaa' where time = (select max(time) from aaa);
select money from bbb where userId = 'bbb' where time = (select max(time) from bbb);
select aaa.money + bbb.money
from
(select money from aaa where userId = 'aaa' where time = (select max(time) from aaa)) aaa,
(select money from bbb where userId = 'bbb' where time = (select max(time) from bbb)) bbb;
댓글을 작성하려면 로그인이 필요합니다.
어렵게 생각할 거 있나요?
A테이블에서 날짜가 최근인 aaa하나 구하고 B테이블에서 날짜가 최근인 aaa 하나 구해서
둘 중 날짜가 큰 것을 취하면 될 것인데요
그 값들의 SUM을 구하려고 <--이건 무슨 말인지 이해불가
답변에 대한 댓글 3개
"조건 아이디를 aaa로 했을 경우 값은 A테이블의 맨 상단머니" 이부분 같은 경우 두 테이블 중에 aaa 의 가장 최근 값은 A테이블의 최상단에 있는 데이터가 가장 최근 값이고요
설명을 잘 못하는 점 양해부탁드리겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인