2009-08-10 4 views
0

세 개의 테이블이 있는데, 각각 자동 증분 PK가 있습니다. 이 테이블을 혼합하여 최신 (즉, ORDERBY DESC) 항목을 선택해야합니다. 하나의 쿼리에서 두 개의 조인을 사용하여이 작업을 수행하고 싶습니다. 제 아이디어는 어떻게 든 테이블을 선택하고 id DESC으로 주문한 다음 결과를 어떻게 든 병합하는 것입니다. 누구든지이 작업을 수행하는 방법이 있습니까?다중 조인에 대한 orderby 문

(사용 MySQL은) 편집 : 죄송합니다 - 여기에 자세한 스펙입니다 : 나는 세 개의 테이블, posts, stories, favs이 . 각 열에는 최소한 3 개의 열 id, uiddate이 있습니다. 그들은 모두 PK입니다. id 자동 증분 (각 테이블에 대해 개별적으로). uid은 FK이지만 그와는 관련이 없습니다. 최신 20 또는 30 개 항목을 포함하도록 결과 세트가 필요합니다.

+2

어떤 필드에 가입 하시겠습니까? 혹시 노조라고 했니? – Zed

답변

0

테이블에 관계가 없기 때문에 테이블에 연결하면 의미가 없습니다. 맞습니까?

내가 이해하는 한, 하나의 결과 세트에서 3 개의 다른 테이블에서 생성 된 레코드를 생성 날짜별로 정렬하고 싶습니다. 이를 달성하는 데는 두 가지 방법이 있습니다.

  1. 3 개의 테이블 모두에 대해 정렬 가능하고 고유 한 PK를 사용하십시오. PostgreSQL에서 쉽게이 작업을 수행 할 수 있습니다. MySQL에서 해결 방법이 필요합니다. 자동 증가 PK를 사용하여 네 번째 테이블을 만들고 다른 세 테이블 PK를 네 번째 테이블 PK를 가리키는 FK로 변경합니다. 이것은 다소 번거롭고 자동 증분 필드가 안정적으로 정렬 가능한 속성에 적합하지 않음을 알 필요가 있습니다 (레코드를 삭제하면 시퀀스에 간격이 생기고 나중에 채울 수 있습니다).

  2. 각 테이블에 created 열을 추가하고 각 레코드의 생성 날짜를 저장하십시오. 그런 다음이 열을 기준으로 UNION을 정렬 할 수 있습니다. 이미 열 date이 있습니다. 이 열을 사용할 수 없습니까?