Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   PHP (https://forum.zone-game.info/forumdisplay.php?f=125)
-   -   Помогите написать запрос (https://forum.zone-game.info/showthread.php?t=16244)

Gambit_J 09.10.2011 19:26

Помогите написать запрос
 
Дана таблица character_subclasses:

http://www.pictureshack.ru/images/392855.PNG

Итак смотрим на последнюю колонку "class_index" - здесь идут саб-класы по порядку у одного чара.

Что мне нужно сделать?
Необходимо все единцы("1") в колонки class_index, у повторяющихся charId установить на "+1...". Как сделать такой запрос? Весь день голову уже ломаю)

L2CCCP 09.10.2011 19:43

Re: Помогите написать запрос
 
Думаю легче было за пол дня переписать в ручную.

Place 09.10.2011 19:53

Re: Помогите написать запрос
 
тут одним запросом не обойдется :D

в раздел рынок
быстрее и проще

или http://rutracker.org/forum/viewtopic.php?t=3709220
часть 2 - основы работы с базой
4 и 6 пункт

там как раз в примере циклы

Gambit_J 09.10.2011 20:24

Re: Помогите написать запрос
 
L2CCCP, хех, а если 5к+ записей? Как ты себе это представляеш(сверка)? :)


Place, Ну я так примерно и предпологал, что без цикла ни как(( Просто думал. мало ли мож чето незнаю)

DreamCast 09.10.2011 20:34

Re: Помогите написать запрос
 
чет типа того

$all = mysql_num_rows(mysql_query("SELECT class_idexp FROM character_subclasses WHERE charid=1111"));
$i = 1;

while ($i <= $all) {
mysql_query('UPDATE character_subclasses SET class_index = $i WHERE charid=111 AND class_index=1');
}

Gambit_J 09.10.2011 20:37

Re: Помогите написать запрос
 
Цитата:

Сообщение от DreamCast (Сообщение 142633)
чет типа того

$all = mysql_num_rows(mysql_query("SELECT class_idexp FROM character_subclasses WHERE charid=1111"));
$i = 1;

while ($i <= $all) {
mysql_query('UPDATE character_subclasses SET class_index = $i WHERE charid=111 AND class_index=1');
}

Проблема в том, что чар не один) Попробуй твой запрос селект развернуть в цикл и задать все это в массив для вхиле. Сообщу об успехах. Спасибо за подсказку. :)

DreamCast 09.10.2011 20:38

Re: Помогите написать запрос
 
на самом деле можно сделать и средствами SQL.
например многосоставный запрос или переменные в sql.

Добавлено через 55 секунд
Цитата:

Сообщение от php_mysql (Сообщение 142634)
Проблема в том, что чар не один) Попробуй твой запрос селект развернуть в цикл и задать все это в массив для вхиле. Сообщу об успехах. Спасибо за подсказку. :)

в задании про множество чаров инфы не было)

Gambit_J 09.10.2011 20:43

Re: Помогите написать запрос
 
Цитата:

Сообщение от DreamCast (Сообщение 142635)
в задании про множество чаров инфы не было)

Тада я бы пошел по стопам 2 поста в теме :D )))

Цитата:

Сообщение от DreamCast (Сообщение 142635)
на самом деле можно сделать и средствами SQL.
например многосоставный запрос или переменные в sql.

Добавлено через 55 секунд

да я тоже так думал, но все же учитываю множественность чаром без цикла кажись не обойдеться. В любом случае придеться записывать все в массивы, а тут тока цикл выполнит их полность.

DreamCast 09.10.2011 20:52

Re: Помогите написать запрос
 
нет возможности проверить, возможно, так будет работать тоже:
UPDATE character_subclasses SET class_index=(class_index+1)
WHERE charid=111
AND class_index=1
AND class_idexp=(SELECT class_idexp FROM character_subclasses WHERE charid=1111);

Добавлено через 2 минуты
точнее так)
UPDATE character_subclasses SET class_index=(SELECT MAX(class_index) FROM character_subclasses WHERE charid=1111)+1
WHERE charid=111
AND class_index=1
AND class_idexp=(SELECT class_idexp FROM character_subclasses WHERE charid=1111);

Gambit_J 09.10.2011 20:58

Re: Помогите написать запрос
 
У меня наплыв идей проихошел)) ща делаю)


Текущее время: 08:07. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot