Autor Zpráva
Chuchycek
Profil
Dobrý den,

chtěl bych se zeptat jestli existuje v sql nějaká funkce, která by mi dokázala najít nějaký znak. Nevím jak to říci přesně, tak uvedu příklad.

SELECT * FROM tabulka WHERE kategorie = '1'

a já v té kategori mám uložené hodnoty v tomto formátu 1.2.3.5.6.8

Předem děkuji a omlovám se za hektický popis :-)
mimochodec
Profil
Jdeš na to špatně. Podívej se na Výpis záznamů a délka dotazu
Chuchycek
Profil
Jenže to se mi zdá takový divný mít tam o jednu tabulku navíc.. a todle je jako jediný reálný řešení?
panther
Profil
Chuchycek:
a todle je jako jediný reálný řešení?
jediné rozumné a správné. S tím tvým návrhem bys měl později dost problémů, doporučuji návrh DB upravit, dokud je čas.

se mi zdá takový divný mít tam o jednu tabulku navíc
proč? Počet tabulek není omezený a správný počet je přesně takový, kolik jich reálně potřebuješ.
ShiraNai7
Profil
Chuchycek:
Není to jediné reálné, ale spíš jediné "správné" a hlavně efektivní. Co ti vadí na párovací tabulce?
peta
Profil
Tabulka navic je nejlepsi reseni, protoze se s ni da pak dobre vybirat, co potrebujes.

LIKE, IN, REGEXP, FIND_IN_SET
LIKE '%1%' ti najde i '.15.'
IN to potrebuje rozdelit na array
REGEXP v tom se to da zapsat ^1$|^1.|.1$|^.1.$ (tak nejak, vsechny 4 moznosti)
FIND_IN_SET je k tomu primo urcene
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_find-in-set
Ale vsechny tyhle metody jsou dost neefektivni a pouzitelne spis na vyjimecne dotazy nez casto opakovane.

Zkus mrknout tady, jak se do toho zamotal...
procházení hodnotami vrácenými s DB
Chuchycek
Profil
peta díky, přesně todle jsem hledal

Ale už jsem zvolil řešení s párovací tabulkou, vypadá a je to efektivní, takže všem děkuji za rady.

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: