UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = 10 and `ps`.`tries` = 0
WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
OR ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
Try this query:
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = 10 and `ps`.`tries` = 0 WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5)) OR ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
Ignazio
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = 80 and `ps`.`tries` = 0
WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = 70 and `ps`.`tries` = 0
WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
I divided them into two different queries
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = 80 and `ps`.`tries` = 0 WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = 70 and `ps`.`tries` = 0 WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
Hope it works!
Ignazio
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = 80 and `ps`.`count` = 0
WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = 70 and `ps`.`count` = 0
WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
Ops! Mistook count for tries, sorry, here are two new, hopefully working queries:
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = 80 and `ps`.`count` = 0 WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = 70 and `ps`.`count` = 0 WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
Ignazio
All the skills are zero? How does it look in the player_skills table?
Maybe the count doesn't reset after an increase of skill, sounds weird though.
Ignazio
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = 80 and `ps`.`count` = 50000
WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = 70 and `ps`.`count` = 50000
WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
Sounds weird, take a look at the entries in the "player_skills" table and find some row with more than 50 in `value`, what is the `count` there?
Try this too:
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = 80 and `ps`.`count` = 50000 WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = 70 and `ps`.`count` = 50000 WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
Ignazio
The query is perfectly fine, the problem is your outdated server, probably handling count as a constant value rather than resetting for each level.
Could you go to player_skills and "browse" and show me how it looks
Ignazio
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = "80"
WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
UPDATE `player_skills` as `ps`
LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id`
SET `ps`.`value` = "70"
WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
What? Lawl something of yours is way outdated, why would it set 0 when I specifically told it to get 10? Maybe it complains about the spaces, hmm.
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = "80" WHERE ((`pl`.`vocation` = 4 or `pl`.`vocation` = 8) and (`ps`.`skillid` = 2 or `ps`.`skillid` = 3 or `ps`.`skillid` = 5))
Code:UPDATE `player_skills` as `ps` LEFT JOIN `players` AS `pl` ON `ps`.`player_id` = `pl`.`id` SET `ps`.`value` = "70" WHERE ((`pl`.`vocation` = 3 or `pl`.`vocation` = 7) and (`ps`.`skillid` = 4 or `ps`.`skillid` = 5))
That might work, not sure what SQL / Phpmyadmin, php or forgotten server version you are using, makes things unpredictable
Ignazio