Autor Zpráva
Miri
Profil *
Ahoj, snažím se převést záznamy ze staré (chybné) databáze do nové. Ve staré nebyly vedeny cizí klíče a podobně. Bohužel se tam vyskytují řádky, které nemají svého předka a sql hlasí chybu.

INSERT INTO `menu_has_produkt` (`menu_idmenu`, `produkt_idprodukt`) VALUES
(22, 15),
(11, 16),
(17, 15),
(20, 15),  //například chybný řádek
(60, 14),
.... (tisíce zánamů)
(8, 155);

Nevíte jak docílit toho, aby se chybné řádky vynechaly?
Mockrát díky za odpověd
Míra
Alphard
Profil
Nemůžete chybné řádky smazat?
Miri
Profil *
Tahle možnost mě napadla, ale budu pro to muset dělat speciální výběry v sql, kde zjistím jen ty řádky, které jsou správné a ostatní nějak smažu, jenže databáze je vcelku obsáhlá a pro každou tabulku budu muset dělat zvlášt jiný dotaz.

Myslel jsem jestli neexistuje v SQL něco jako IF DONT EXIST ROW .... :-)
Alphard
Profil
Konstrukce delete from ... where id not in (select id from ...) není tak složitá.

Jinak jde nastavit SET foreign_key_checks = 0;, ale radši bych to opravil.
Miri
Profil *
Něco takového jsem zkoušel ale nezadal jsem not in, každopádně funguje, takže jeste jednou díky. A když už jsme v tom, nevíte jak vymazat duplucitní záznamy z této tabulky ? Našel jsem vždy návod jen na smazání duplicitních hodnot jednoho sloupce.
Alphard
Profil
stackoverflow.com/a/3312066
Kajman
Profil
A nestačí u prvního problému použít ignore?
INSERT IGNORE INTO ...

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: