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

Это список видов обыкновенного леща, и он покажет список рекордов максимального веса для каждого имени рыбы И рыболова, который их поймал.

НО по какой-то неизвестной причине - и я не редактировал его, он перестал работать и теперь возвращает только лучшее для рыболовов, а не действительно лучшее.

Внутренний оператор прошел проверку нормально и возвращает список названий рыб и упорядочивает вес (драм) в порядке убывания. Когда это отображается, верхняя запись каждого имени рыбы является самым высоким весом улова. Внешний оператор теперь терпит неудачу.

Любая помощь здесь будет очень признательна. Также я хотел бы знать, почему он перестал работать.

Пример:

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 

person The Mafster    schedule 02.10.2014    source источник
comment
Можете ли вы настроить скрипт SQL? Что касается того, почему он перестал работать, мы не можем вам сказать. Если бы это работало вчера и не работает сегодня, я бы посмотрел на необработанные данные, чтобы убедиться, что они не были устранены или изменены каким-либо образом.   -  person Jay Blanchard    schedule 02.10.2014
comment
В чем смысл подзапроса? Почему бы вам просто не запросить ConqPB напрямую?   -  person wavemode    schedule 02.10.2014
comment
Данные в порядке. Во внутреннем операторе он организует это так, как должен, но внешний оператор терпит неудачу.   -  person The Mafster    schedule 02.10.2014
comment
Как бы вы поступили с прямым запросом ConqPB? Пробовал это раньше, но это было слишком сложно - поэтому я спрашивал на форуме раньше, и это заявление решило проблему. Кажется странным, что это не удалось. Я также связался с хостинговой компанией, чтобы узнать, сделали ли они что-то странное.   -  person The Mafster    schedule 02.10.2014
comment
Добавил пример того, что требуется.   -  person The Mafster    schedule 02.10.2014
comment
Только что сделал запрос в php, чтобы отобразить всю таблицу, и все выглядит идеально. Просто не понимаю, почему код больше не работает :(   -  person The Mafster    schedule 02.10.2014
comment
fancyPants ответил на проблему, и поэтому я отмечу ее как решенную, потому что его решение работает как sql, но не в инструкции php, где я думаю, что проблема может быть связана с сервером.   -  person The Mafster    schedule 03.10.2014


Ответы (1)


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
person fancyPants    schedule 02.10.2014
comment
Вот этого я не понимаю. Этот код работает так, как показано, и отлично, но когда он используется в качестве php-скрипта, который запускается на моем сайте, он дает сбой всеми возможными способами - и это также выкапывает только одно имя. Я проверил основную таблицу, и вся информация присутствует. Так что не уверен, почему это не будет работать на сайте. Я спросил хозяев, изменили ли они что-нибудь, потому что я нет!!! - person The Mafster; 02.10.2014
comment
Возможно ли, что что-то изменилось на сайте хостинга, что может помешать выполнению моего Sql с использованием php-скрипта? Демонстрация fancyPants отлично работает, но не будет работать эффективно на моем сайте. Он по-прежнему печатает только одно имя рыболова. - person The Mafster; 02.10.2014
comment
Я также уверен, что функция Max никогда не работает правильно в моих php-скриптах. - person The Mafster; 02.10.2014
comment
Вы случайно не пропустили group by? - person fancyPants; 02.10.2014
comment
Он не поврежден. Просто сократите виды, чтобы их было легче увидеть на сайте, и что происходит, я выбираю виды, а затем выполняется ваш код, но он по-прежнему показывает только записи одного рыболова, а не лучшие. Как будто Max Drams не работает или что-то в этом роде. - person The Mafster; 02.10.2014
comment
Становится страннее. У меня есть еще один фрагмент кода, который проверяет личные рекорды, а также проверяет текущий рекорд. Тот запрос, который проверяет запись, тоже не работает. - person The Mafster; 02.10.2014