Autor Zpráva
PetrBK
Profil
Ahoj,

jen bych se chtěl poradit ohledně vhodného řešení tabulky v MySQL. Mám tabulku, kde jsou dva sloupce s datovým typem SET. (1. sloupec má předdefinované 4 hodnoty a druhý 6 hodnot).

Na první dobou jsem to řešil vyhledáváním pomocí LIKE
...WHERE `col` LIKE "%val1%" OR `col` LIKE "%val2%"  OR `col` LIKE "%val3%" ...

Následně jsem přešel k dotazu s regulárním výrazem
...WHERE CONCAT(",", `col`, ",") REGEXP ",(val1|val2|val3),"

Ale stále si pohrávám s myšlenou, zda nebude lepší to hodit do pomocné tabulky kde bude jen ID a VALUE

Možná řeším úplnou blbost, ale přinejmenším mě zajímá názor zkušenějších, jaké řešení je nejoptimálnější.
Díky moc
P.
Kajman
Profil
Like nemusí být přesné, pokud je jedna hodnota podřetězec jiné.

Lze použít i funkci
find_in_set("val1",`col`)

Pokud tam bude víc než malé množství záznamů a bude se podle toho často vyhledávat, tak bych osobně udělal pro každý set dvě další tabulky. Číselník hodnot (číslo, textový popis) a vazební tabulku se sloupci (číselné_id_ze_současné_tabulky, číselné_id_z_číselníku_hodnot). Nad tím pak půjdou dělat indexy a dotazy by mělý být svižnější.
PetrBK
Profil
Díky za názor.
Tabulka nebude až tak velká (ikdyž nevím co je "víc jak malé množství"...), cca 1000 záznmů, ale zmíněné sloupce budou součástí volitelného vyhledávání uživatelem.

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:

0