2014-10-02 3 views
0

다음 코드는 정상적으로 작동하지 않습니다.SQL (PHP) 베스트 레코드 추출 필요

SELECT Species, FishName, Rank, Angler, lb, oz, dr, Drams, Peg, DateCaught 
FROM 
    (SELECT Species, FishName, Rank, Angler, lb, oz, dr, Drams, Peg, DateCaught 
     FROM ConqPB 
     ORDER BY FishName, Drams DESC) a 
WHERE Species = 'Common Bream' 
GROUP BY FishName 
ORDER BY Species ASC, Rank ASC, Drams ASC 

그것은 일반적인 도미의 종에 대한 목록과 각 물고기의 이름을 잡은 낚시꾼의 최고 무게의 기록 목록이 표시됩니다.

하지만 편집하지 않은 상태에서 작업이 중단되었으며 현재 실제 최고가 아닌 한 명의 낚시꾼 만 반환합니다.

내부 구문은 테스트를 거쳐 물고기 이름 목록을 반환하고 내림차순으로 무게 (dram)를 정렬합니다. 이것이 표시되면 각 어류 이름의 최고 기록이 가장 높은 어획량입니다. 이제 외부 구문이 실패합니다.

도움이 필요하시면 정말 감사드립니다. 또한 왜 그것이 작동을 멈추는 지 알고 싶습니다.

예 : 결과는

공통 도미 기록 될 것

Species   FishName    Drams    Angler 
Common Bream  Henry     300    Peter Beard 
Common Bream  Henry     400    Harry Web 
Common Bream  Henry     0     Carl Pilk 
Common Bream  Darcy     0     Peter Beard 
Common Bream  Darcy     760    Harry Web 
Common Bream  Darcy     900    Carl Pilk 

Fishname    Drams     Angler 
Henry    400     Harry Web 
Darcy    900     Carl Pilk 
+0

[SQL Fiddle] (http://sqlfiddle.com)을 설치할 수 있습니까? 왜 그것이 작동을 멈췄는지에 관해서는 당신에게 말할 수 없습니다. 어제 작동했는데 오늘이 아니라면 원시 데이터를 조사하여 어떻게 든 제거되거나 변경되지 않았는지 확인합니다. –

+0

하위 쿼리의 핵심은 무엇입니까? 왜'ConqPB'를 직접 질의하지 않습니까? – wavemode

+0

데이터가 정상입니다. 내부 명령문에서는 필요한대로 명령을 구성하지만 외부 명령문은 실패합니다. –

답변

0
select 
* 
from 
t 
inner join (
    select 
    species, fishname, max(drams) as maxdrams 
    from 
    t 
    group by species, fishname 
) sq on t.species = sq.species and t.fishname = sq.fishname and sq.maxdrams = t.drams 
+0

이것은 내가 이해하지 못하는 것입니다.이 코드는 완벽하고 올바르게 작동하지만 내 사이트에서 실행되는 PHP 스크립트로 사용될 때 모든 가능한 방법으로 실패하고 있습니다. 단 하나의 이름 만 빼고 나는 메인 테이블을 체크하고 모든 정보가있다. 왜 사이트에서 작동하지 않을지 모르겠다. ! –

+0

php 스크립트를 사용하여 Sql이 실행되는 방식을 방해 할 수있는 호스팅 사이트 내에서 뭔가가 변경되었을 가능성이 있습니까? fancyPants 데모가 멋지게 작동하지만 내 사이트에서 효율적으로 작동하지 않습니다. 여전히 한 명의 낚시꾼 이름 만 인쇄됩니다. –

+0

나는 또한 확실하다. 맥스 함수는 내 PHP 스크립트 내에서 제대로 작동하지 않는다. –