2011-12-28 4 views
0

최대 값 'PNRno'열이있는 행을 검색하려고합니다. 여기서 PNRno는 기본 Tktrsrv의 핵심이며 여러 테이블과 함께 realatioship 있습니다. 코드는 다음과 같이 작성됩니다 :'realationship'열이 집계 함수 또는 GROUP BY 절에 포함되어 있지 않기 때문에 선택 목록에서 유효하지 않습니다.

Select 
PNRcd,PNRno, Tktno, Tno, Tname, Doj, Class, brding, rsrvdupto 
from Tktrsrv 
GROUP BY PNRno 
Having PNRno= Max(PNRno); 

도와주세요.

+1

GR을 사용하고 있지 않습니다. 적절하게 OUP BY. – JonH

답변

2

GROUP BY을 사용할 경우 GROUP BY 절에 집계되거나 언급되지 않은 열 목록에서 열을 사용할 수 없습니다.

최대 값이 PNRno 인 행 하나만 선택하려면 GROUP BY도 필요하지 않습니다. 이 쿼리를 사용

Select 
    PNRcd,PNRno, Tktno, Tno, Tname, Doj, Class, brding, rsrvdupto 
    from Tktrsrv 
    WHERE PNRno = (SELECT Max(PNRno) FROM Tktsrv) 
0

을 Prdno 당신이 tktrsrv 테이블에 한 번있을 만 할 수있는 각 값으로하여 그룹을 할 필요가없는 다음 기본 키의 경우.

따라서 당신은

select max(PNRno) from tktrsrv 

과 최대 값을 선택하고 당신이 PNRno의 tktqueue에 외래 키가 다른 테이블에서 선택하려면 내가 구성된 TABLENAME)

select * from tktqueue 
where PNRno=(select max(PNRno) from tktrsvr); 

입니다 마찬가지로 다른 테이블에서 가장 높은 tktrsrv에서 데이터를 선택하려는 경우

select * from tktrsvr 
    where PNRno=(select max(PNRno) from tktqueue);