Autor Zpráva
libis
Profil
Zdravím,
pomozte mi prosím vyřešit tento problém:

SELECT * FROM CLANEK where AUTOR = 'RUZNÁ ČÍSELNÁ HODNOTA (0-99)'

Jde o to, že hodnota AUTOR bude obsahovat bud celou cislici nebo třeba 2 cislice - bud tedy2 nebo 2|25. Nanejvýše tam budou čísla 2 nebo 3, takže maximalne to bude treba takto: 2|1|18.

Potrebuju poradit se selectem, který najde všechny3 AUTORY, tabulky si spojit umim(seznam AUTORU mam v samostatne tabulce), tady ukazuju jen tu zakladni variantu selectu. Potřebuji tedy rozdelit v mysql prikazu nejak tu hodnotu podle znaku '|'.

P.S. Vím, že tento systém není nejlepší, ale přebral jsem to, a musí se tam zavést více AUTORU.Prekopavat to nema cenu.
YoSarin
Profil
libis:
Špatný návrh databáze. Opravdu. Pokud potřebuješ zavést více autorů, je lepší to udělat jinak. Ideálně další tabulkou navíc.
Podle toho co píšeš jsi to už teď musel překopávat (např. změnit typ sloupečku z int na varchar) - přidat jednu tabulku (id, clanek_id, autor_id) by nebylo o nic složitější a rozhodně lepší.

Nicméně, pokud trváš na téhle variantě, tak cca nějak takhle (nemám tu teď k dispozici mysql, tak nemůžu úplně otestovat):
SELECT * FROM clanek WHERE AUTOR REGEXP '^|\|cislo$|\|';


btw, fakt je pole AUTOR velkými písmeny?
libis
Profil
Ok, díky, vyzkouším, ono se to nakonec bude muset vyřešit asi tou tabulkou navíc, pole autor velké není, jen jsem ho tady chtěl zvýraznit...
Tori
Profil
libis:
Kdyby byly hodnoty místo svislítka oddělené čárkou, mohl byste použít
FIND_IN_SET('$id', sloupec) > 0
Připadá mi to trochu přehlednější než regulár, a myslím, že i o něco rychlejší.
Ale jak psal YoSarin, lepší by bylo změnit DB.

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