Я пишу на MySQL / PHP, но у меня возникла проблема, я не могу разобраться. Этот один скрипт PHP содержит два оператора SQL. Я пытаюсь обновить таблицу спортивных лиг (таблицу SQL с именем tblrank, которая содержит много таблиц лиг, разделенных TableID) и указать, была ли команда повышена или понижена с момента последнего обновления. Этот первый фрагмент кода немного неуклюж и, возможно, мог бы быть написан лучше (я мог бы сделать это примерно в 6 строках в MSSQL), он работает, подсчитывая количество команд, которые ранжируются ниже его, а затем добавляя одну. Кажется, это работает ... вроде, как я объясню позже.
update tblrank AS r
set Rank = 1 + (select count(*) from
(select r2.teamID
from tblrank r2
inner join tblrank r3
where r3.TableID = r2.TableID and r3.TableID = $tableid
and (r3.Points > r2.Points
or (r3.Points = r2.Points and r3.TieBreaker > r2.TieBreaker))) as duh
where duh.teamID = r.teamID
and duh.TableID = r.TableID
and r.TableID = $tableid
Затем выполняется этот бит кода, чтобы выбрать изображение для отображения.
update tblrank
set image = case when Rank < LastRank then 'up.png'
when Rank > LastRank then 'down.png'
else 'nomove.png' end
where TableID = $tableid
Теперь, если я запускаю это для $ tableid = 1, все работает просто отлично. Но если я запускаю его для $ tableid = 2, тогда все ранги во всем tblRank устанавливаются на 1. (Перед запуском его для $ tableid = 2 все ранги равны 1, за исключением записей, где TableID = 1). Это явно не то, что я хочу.
Оба оператора находятся внутри условия if (mysql_query ($ sql)), поэтому я могу проверить, выполнялись они или нет.
Я использую MS SQL намного больше, чем mySQL, поэтому я не эксперт - может кто-нибудь помочь мне с этим, когда я сбит с толку! Я проверил, что оба куска кода выполняются. Между ними нет никакого другого SQL.