[완료] MySQL에서 두 테이블 합쳐서 쿼리하기..

calvinpark의 이미지

안녕하세요

테이블 A.

+----+---------+-----------+
| id | content | timestamp |
+----+---------+-----------+
|  1 |  "A11"  |     3     |
+----+---------+-----------+
|  2 |  "A22"  |     5     |
+----+---------+-----------+
|  3 |  "A33"  |     7     |
+----+---------+-----------+

테이블 B.

+----+---------+-----------+-----+
| id | content | timestamp | idA |
+----+---------+-----------+-----+
|  1 |  "B22"  |     8     |  2  |
+----+---------+-----------+-----+

여기서 아래같은 데이터를 어떻게 해야 뽑아낼지 도통 대책이 안섭니다..

         +-------------------+------------------------------------------+-----------+
DISTINCT | A.id와 idA의 집합 | (A.timestamp와 B.timestamp의 집합) AS ts | A.content | ORDER BY ts DESC
         +-------------------+------------------------------------------+-----------+
         |        2          |                   8                      |   "A22"   |
         +-------------------+------------------------------------------+-----------+
         |        3          |                   7                      |   "A11"   |
         +-------------------+------------------------------------------+-----------+
         |        1          |                   3                      |   "A33"   |
         +-------------------+------------------------------------------+-----------+

다르게 설명하자면 두 테이블의 비슷한 필드를 병합시키고(A.id+idA, A.timestamp+B.timestamp), 병합된 필드로 정렬을 시킨 후(ORDER BY ts DESC), 그 순서로 다른 병합된 필드(A.id+idA)와 그에따른 내용(A.content)을 뽑아내는거죠.

하다하다 모르겠어서 여기가 이런 질문 하는덴지도 모르겠지만 일단 부탁드려봅니다.
아시는분 제발좀 도와주세요 ㅠㅠ

감사합니닷..

skyoon의 이미지

id와 idA를 조인시키면 끝.

timestamp가 설마 다르진 않겠죠? 같다면 하나만 써서 as로 리네임 해주면 되니 -_-;;

다르다면 유니온으로 id, timestamp, content를 각각 구해서 유니온 하고 그결과를 order by 하면 될것같네요.

근데 다르다면 결과가 좀 이상할 것같은데...;;;흠흠;;;

calvinpark의 이미지

해볼게요.. 감사합니다..

fox9의 이미지

select A.id, ifnull(A.timestamp, A.timestamp) as ts, a.content from A left join B on A.id = B.idA order by ts desc

마지막에 그려져있는 데이터와 똑같이 나옵니다.

calvinpark의 이미지

오오오 감사합니다