2010-12-14 2 views
0

에서 특정 필드 값과 가장 높은 값으로 행을 가입 시간 TIMESTAMP
PRIMARY KEY (기사, lang, 시간)
...

관련된 최신 행 Article_versions에서 기사 및 입력란의 입력란을 선택하고 싶습니다.
조인 또는 2 개의 select 문을 사용해야합니까?
그리고 어떻게해야합니까?내가 2 개 테이블이 다른 필드

SELECT ID,lang,time 
FROM articles,article_versions 
WHERE articles.ID=<article_id_you_provide> AND 
     articles.ID=article_versions.article AND 
     article_versions.time = (SELECT max(time) 
           FROM article_versions 
           WHERE article=<article_id_you_provide>); 

이 당신이 내가 할 수 찾고 있습니다하지 무엇을 알려줘 :

답변

0

당신이 검색하려고하지만 특정 ID를 알고있는 경우에 당신이 사용할 수있는 정보를 정확히 혼란 내 대답을 더 수정하십시오. [Articles_versions] 가정

+0

네, 내가 원하는 일을합니다. 그러나 성능은 어떻습니까?이 속도는 조인보다 느리거나 조인과 동일하지 않습니까? – kravemir

+0

이 방법을 사용하면 두 테이블과 where 절의 교차 곱이 걸리기 때문에이 방법은 조인입니다. 조인 구문을 사용하지 않은 이유는 article_versions의 외래 키가 기사와 동일한 이름이 아니 어서 자연스러운 조인을 수행하기가 더러워지기 때문입니다. –

0

[시간]을가 다음을 사용할 수 설정 조인 반환 유일한 고유의 열 다음과 같습니다.

SELECT [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang], MAX([Articles_versions].[time]) 
FROM Articles Inner Join Articles_versions ON [Articles].[ID] = [Articles_versions].[article] 
GROUP BY [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang] 
+0

최신 기사 버전을 가져 오지 않습니다. 따라서 MAX (시간)는 가장 최신이지만 article_versions의 다른 입력란은 – kravemir

관련 문제