Autor Zpráva
Crempa
Profil *
Zdravim, mam nasledujici problem...
mam pole s MAC adresami a v databazi tabulku kde jeden sloupec obsahuje taktez MAC adresy. No a potreboval bych u zaznamu v databazi jejichz MAC adresa nema protejska v tom poli (nevyskytuje se v tom poli) nastavit priznak (v jinem sloupci) rekneme na 0. Pole taktez muze obsahovat adresy, ktere v databazi nejsou a ty by se meli pridat. Napadlo me nekolik cest

1) pro kazdou polozku z databaze projit cele pole a pokud se v nem adresa nevyskytuje nastavit priznak (to me prijde jako silne pomale a nevhodne reseni)

2) v databazi nastavit vsechny priznaky na 0 a postupne prochazet pole s tim ze budu nastavovat priznaky na 1 (ty co zbudou s 0 nemaji v poli protejska) (u teto metody me zas prijde ze se prilis vyuziva databaze)

3) vytvorit z pole nejakopu temp tabulku a problem resit na urovni databaze (napriklad pomoci procedur a kursoru - v teto oblasti se vsak zas tak neorientuju)

Takze se ptam, jak by jste to resily Vy?
Diky za reakce
koudi
Profil
Osobně bych to řešil asi takhle: Máš ve skriptu pole s adresami, z db si vytáhneš ty druhý adresy, nacpeš je též do pole. Pak od sebe odečteš ty dvě pole. TIm zjistís, který ti chyběj a ty pak jednoduše updatuješ v db.
Tohle mi přijde nejjednodušší, ale takhle poránu mi to ještě moc nemyslí, tak to možná pude i jinak.
llook
Profil
$in = '\'' . implode('\', \'', $adresy) . '\'';

$db->exec("UPDATE tabulka SET priznak=(adresa IN ($in));");
Anonymní
Profil *
$db->exec() je ale z PEAR nie? a co ked niekto toto rozsirenie nepouziva?
ako to bude formulovane?
llook
Profil
Anonymní Je to z PDO, v PEAR se to jmenuje execute a v adodb Execute. Pokud používáš MySQL, tak místo toho bude mysql_query.
Anonymní
Profil *
aha dik za info
Crempa
Profil *
Diky za reakce,
o necem podobnem jsem take uvazoval, ale v pripade vetsiho mnozstvi zaznamu se $in celkem rozroste a z nedavne doby mam zkusenost ze pokud preroste pocet hodnot v parametru IN u MySQL nad hodnotu 1000 tak se to chova dost neocekavane. Nebo myslite ze by to nemel byt problem... ?

V mem pripade hovorime o tabulce s 1000-2000 zaznamy...
Toto téma je uzamčeno. Odpověď nelze zaslat.