Autor Zpráva
Zechy
Profil
Zdravím,
do databáze potřebuju vložit novou vazbu mezi studentem a téamtem ročníkovky, ovšem v případě změny potřebuju ten dotyčný záznam změnit, na což jsem teda chtěl použít Merge. Dotaz vypadá takhle(jsou použity zkušební hodnoty):

MERGE INTO vybrane_tema USING vybrane_tema ON(student_id = 4 AND predmet_id = 1)
WHEN MATCHED THEN 
    UPDATE SET tema_id = 3
WHEN NOT MATCHED THEN 
    INSERT (student_id, tema_id, predmet_id) VALUES(3, 3, 3);

Ovšem ve chvíli, když to spustim zahlásí mi Adminer chybu:
Chyba v dotazu (1064): Syntax error near 'MERGE INTO vybrane_tema USING vybrane_tema ON(student_id = 4 AND predmet_id = 1)' at line 1

Chybu se mi nikde nedaří nalézt, netušíte v čem je problém?
ShiraNai7
Profil
MySQL nezná MERGE. Zkus použít http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
Zechy
Profil
Tak to bude těžký, na vkládaných hodnotách nemůžu použít key, potřebuju odlišit, jestli se nevkládá stejný student ze stejného předmětu, obojí v tabulce může být duplikátní.
Kajman
Profil
Zechy:

Můžete udělat unikátní klíč na kombinaci obou sloupců.
Zechy
Profil
Jenže jak student, tak i předmět ale je možné že i téma můžou být duplikátní třeba 50x. Každej student může mít vybrané téma v 10 předmětech, každý předmět může mít 10 studnetů
Kajman
Profil
Ano, proto nebudete dělat dva indexy na každém se sloupců, ale uděláte jeden unikátní index nad oběma sloupci zároveň.
http://dev.mysql.com/doc/refman/5.5/en/create-index.html
Zechy
Profil
Kajman:
TAkhleee, děkuju :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: