ugrás a tartalomhoz

Insert into gond

lenis90 · 2010. Ápr. 16. (P), 20.49
Sziasztok!

Adott egy tábla usid, toid, felel mezőkkel.

Ehezz van egy kód írva így néz ki:

$db->query("INSERT INTO tabla (usid, toid, felel) VALUES
ON DUPLICATE KEY UPDATE
felel = felel + values($felel)");

Az usid, és a toid mezőket automatikusan írja, azzal nincs is gond.

A gond az hogy nekem a felel mezőt kellene updatelnem ezzel a kóddal, csak hogy az usid, és a toid mezőknek gyakran azonos értékeik vannak.

Pl: usid toid felel
1 5 8
1 5 3

Nekem viszont így kéne: usid toid felel
1 5 11

Magyarul az usid és a toid mezőket duplikálja, holott elvileg ez: ON DUPLICATE KEY UPDATE , ezt a dolgot megakadályozná és frissítené a mezőket.

Erre kellene nekem egy megoldás.

Fontos lenne hogy insert intoval menjen a parancs, így olyan hozzászólást légyszives ne írjatok hogy használjak update set-et.

Esetleg kulcsot kéne megadnom a táblához?

ui: a leírt kód lehet hogy hibás, most gyorsan dobtam össze példának, de a lényeget szerintem lehet érteni:D

A válaszokat előre is köszönöm :)
 
1

Nem értem

janoszen · 2010. Ápr. 17. (Szo), 10.20
Próbáld meg légyszi inkább leírni a probléma "üzleti logika" oldalát, amit meg akarsz oldani. Ja és ha szeretéd komoly szintre vinni a fejlesztést, szokj le a rövidítésekről mert amellett hogy irritáló még érthetetlen is.

Ha jól sikerült kihámoznom a leírásodból, akkor olyat szeretnél hogy több mezőre legyen unique key. Namost a táblaleírásod ugyan nincs itt, de gyanítom, hogy a toid mezőn nincs semmilyen kulcs.
2

Megoldva

lenis90 · 2010. Ápr. 17. (Szo), 10.36
Mint írtam ez csak egy példa volt, a rendes kód természetesen tökéletesen átlátható, érthető :)

Tegnap este aztán kisérleteztem a kulcsokkal, így sikerült is megoldani.

Megoldás -> UNIQUE KEY -> usid, toid mezőkre.

Természetesen köszönöm a válaszod :)
3

primary key

Drawain · 2010. Ápr. 18. (V), 01.29
Minden táblában szokás elsődleges kulcsot létrehozni, a te esetedben a primary key mindkét azonosító-mezőt foglalja magába. Ez szebb megoldás.