|
|
|
|
|
для: Valick
(05.12.2008 в 09:24)
| | Вот так нормально?
UPDATE characters AS ch
SET ch.exp = ch.exp + $up, ch.level = ( SELECT MAX(level.level) FROM level WHERE ch.exp >= level.exp )
WHERE ch.id_chars=$id
|
| |
|
|
|
|
|
|
|
для: Trianon
(05.12.2008 в 08:31)
| | Спасибо. Так вообще красота.
Я так понимаю WHERE ch.id_chars=$id относится и к UPDATE и к SELECT несмотря на то что последний в скобках?
Теперь остаётся объединить два запроса UPDATE (возможно?) и получится аналог триггера. | |
|
|
|
|
|
|
|
для: Valick
(05.12.2008 в 01:55)
| |
UPDATE characters AS ch
SET ch.level = ( SELECT MAX(level.level) FROM level WHERE ch.exp >= level.exp )
WHERE ch.id_chars=$id
|
| |
|
|
|
|
|
|
|
для: Trianon
(05.12.2008 в 01:02)
| | Вот так у меня получилось:
$query="UPDATE characters AS ch
JOIN
(
SELECT MAX(level.level) AS level
FROM characters JOIN level ON characters.exp >= level.exp AND characters.id_chars=$id
) AS s1 ON ch.id_chars=$id
SET ch.level = s1.level";
|
| |
|
|
|
|
|
|
|
для: Trianon
(05.12.2008 в 01:02)
| | ch.id_chars = 1 это я попробовал сразу
просто хочу всё лишнее из запроса убрать
P.S. жена ругается... грит иди спать... | |
|
|
|
|
|
|
|
для: Valick
(05.12.2008 в 01:00)
| | ну я ж подсказал. | |
|
|
|
|
|
|
|
для: Trianon
(05.12.2008 в 00:57)
| | Уже пытаюсь это сделать) если через неделю несмогу... попрошу помочь)) | |
|
|
|
|
|
|
|
для: Valick
(05.12.2008 в 00:09)
| | тогда можно упростить как вложенный запрос, так и сам апдейт.
Впрочем, достаточно GROUP BY idc заменить на WHERE c1.id_chars = $char_id
можно еще добавить в хвост WHERE ch.id_chars = $char_id , если всё еще медлено работает. | |
|
|
|
|
|
|
|
для: Trianon
(04.12.2008 в 23:59)
| | Вряд ли я когда-нить с Oracle увижусь))
ch и c1 для таблицы characters и l1 и l2 для таблицы level необходимы?
Т.е. без алиасов переписать этот запрос при всём желании неполучится, будет ошибка?
Ещё одна деталь. Этот запрос "лопатит" всю таблицу, я думаю это будет лишним. Его надо будет вызывать именно для того персонажа который получил очки опыта. Всем остальным (громадная часть которых оффлайн) смысла нет переписывать одно и тоже. | |
|
|
|
|
|
|
|
для: Valick
(04.12.2008 в 23:57)
| | AS можно опускать. Этот предлог только для человека. Синтаксическим анализатором он не требуется.
Более того, насколько я помню, Oracle на него ругается и не признает. | |
|
|
|
|