Как обратится к затронутым полям после некой операции над ними?
ChazAshley
Дата: 14.01.2013 16:14:50
Привет. Есть таблица items, в ней содержатся все существующие предметы, есть таблица inventory, которая содержит id персонажа и id предмета. и есть таблица chars, которая содержит текущее и максимально возможное количество предметов в inventory для персонажа.
Задача такова: При удалении предмета из таблицы items, этот предмет удаляется со всех полей таблицы inventory и так, как таблица inventory содержит id персонажа, который также записан в таблице chars, необходимо уменьшить текущее количество предметов, которое записано в таблице chars, на столько раз, сколько предметов удалилось из таблицы inventory для конкретного персонажа.
Вот удаление я знаю как выполнить, а остальное не знаю. Расскажите плиз, какую волшебную функцию для этого нужно использовать??? Спасибо заранее!
Akina
Дата: 14.01.2013 16:49:29
Akina
Дата: 14.01.2013 16:51:49
C другой стороны, за каким хреном хранить текущее количество предметов, если оно считается из остальных данных?
ChazAshley
Дата: 14.01.2013 16:55:06
| Akina |
|---|
| C другой стороны, за каким хреном хранить текущее количество предметов, если оно считается из остальных данных? |
ну я не знал, как считать по другим данным, да и считать каждый раз по другим данным, кажется, как-то слишком сложно чем просто посмотреть в строчке
ChazAshley
Дата: 14.01.2013 17:01:07
Нашел count, полезная штука, спасибо =) А как получить доступ к затронутым полям тоже по этой ссылке найти можно?
ChazAshley
Дата: 14.01.2013 17:04:47
Я тут вспомнил про курсоры, ведь они делают че-то типа своей таблички, в которой есть выбранные поля, и по этим полям можно перемещатся, значит я выберу все строки в inventory где item_id = item_id который нужно удалить, а потом пройдусь по выбранным строкам изымая из них char_id и выполняя операцию декремента с текущим количеством персонажей в табличке chars =)
ChazAshley
Дата: 14.01.2013 17:15:35
а я понял, если считать текущее число предметов в инвентаре с помощью COUNT() то нам не нужно ничего уменьшать на единичку, только сейчас дошло )) Но все же я сделаю с курсорами, т.к. это курсовая, и препод оценивает не логику, а знание всяких фич.
javajdbc
Дата: 14.01.2013 19:02:04
| Akina |
|---|
| C другой стороны, за каким хреном хранить текущее количество предметов, если оно считается из остальных данных? |
(возможно оффтоп)
это так называемая "ап-стрим агрегация", применяется там
где подсчет агрегатов у детишек ("довн-стрим") является дорогим занятием
а сам результат меняется намного реже чем запросы на его чтение.
Или когда резуыльтат можно выдавать примерный,
например персчитывать средний рейтинг фотографий автора
раз в день
Akina
Дата: 14.01.2013 21:27:55
javajdbc, исходя из некоторого знакомства с предметной областью - результат меняется либо чаще, чем читается, либо в среднем 2 чтения на 1 изменение (зависит от типа интерфейса, коих кот наплакал). А подсчёт по строгому равенству единственному значению одного поля при наличии индекса, его селективности намного ниже 1% и получаемом значении максимум 10к (а скорее всего на порядок или два меньше) - что может быть дешевле?
А тут, как выясняется, вообще курсовик...