Autor | Zpráva | ||
---|---|---|---|
libis Profil |
#1 · Zasláno: 23. 9. 2011, 13:07:37
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 |
#2 · Zasláno: 23. 9. 2011, 13:16:10 · Upravil/a: YoSarin
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 |
#3 · Zasláno: 23. 9. 2011, 13:18:52
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 |
#4 · Zasláno: 23. 9. 2011, 13:55:38 · Upravil/a: Tori
libis:
Kdyby byly hodnoty místo svislítka oddělené čárkou, mohl byste použít FIND_IN_SET('$id', sloupec) > 0 Ale jak psal YoSarin, lepší by bylo změnit DB. |
||
Časová prodleva: 13 let
|
0