šiektiek pagalbos su sql

Forumas skirtas klausimams/pamokoms susijusioms su PHP, SQL (MySQL), web technologijomis, HTML, CSS, javascript, turinio valdymo sistemomis ir kita.
Post Reply
User avatar
aurimasko
Flooderis arba specialistas
Posts: 736
Joined: 2010 Sep 04 08:45

šiektiek pagalbos su sql

Post by aurimasko »

Turiu tokią lentelę:

Code: Select all

 CREATE TABLE IF NOT EXISTS `items` (  `id` int(11) NOT NULL AUTO_INCREMENT,  `player_id` int(9) NOT NULL,  `item_id` int(9) NOT NULL,  `item_amount` int(11) NOT NULL,  PRIMARY KEY (`id`),) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_lithuanian_ci AUTO_INCREMENT=0 ; 
Ir užklausą:

Code: Select all

INSERT INTO `%s` (`player_id`, `item_id`, `item_amount`) VALUES ('%d', '%d', '%d') ON DUPLICATE KEY UPDATE `item_amount`='%d';
Kaip padaryt, kad jei lentelėje yra įrašas, kurio `player_id` ir `item_id` yra vienodi, tai neįrašytų naujo įrašo, o tik updatintų esamą?

Bandžiau dėti unique indexus ant jų, bet gaunas kad tik pagal `player_id` žiūri, o ne pagal abu:/

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: šiektiek pagalbos su sql

Post by aaarnas »

Dabar nesugalvoju gero varianto, bet gali padaryti, kad siunti UPDATE tikrindamas norimą sąlygą su WHERE. Jei grąžina, kad affected_rows = 0, tai tada siunti atskirai INSERT.
Galima stored procedūrą padaryti. Gal kas ir geresnį variantą sugalvos. Tikrai tokį atvejį kažkaip kitaip galima išspręsti.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
aurimasko
Flooderis arba specialistas
Posts: 736
Joined: 2010 Sep 04 08:45

Re: šiektiek pagalbos su sql

Post by aurimasko »

Va, kad norisi apseiti su viena užklausa..
A dar sugalvojau,kad tarkim sukurt dar vieną laukelį ir ten irašyt "player id; item id", uždėt unique ir turėtų veikt, bet velgi - kažkaip atrodo kad galėtų būt geresnis variantas.

-- 2015 Bal 06 09:49 --
aurimasko wrote:Va, kad norisi apseiti su viena užklausa..
Aš dar sugalvojau,kad tarkim sukurt dar vieną laukelį ir ten irašyt "player id; item id", uždėt unique ir turėtų veikt, bet velgi - kažkaip atrodo kad galėtų būt geresnis variantas.

Post Reply

Who is online

Users browsing this forum: No registered users and 5 guests