Autor | Zpráva | ||
---|---|---|---|
Tomasekk Profil * |
#1 · Zasláno: 27. 9. 2007, 08:59:34
Zdravim vsechny, rad bych se zeptal, zda-li v MySQL existuje nejaka moznost vyberu zaznamu z vice sloupecku.
Např. potřebuji udělat nějaké hodnocení uživatele v databázi, jenže pokud píše sprostá slova či nějaké inzeráty, rád bych toto ověřoval z databáze. Momentálně to mám uděláno takto: SELECT count(distinct(popis)) as pocetdiskuzi FROM diskuze WHERE vlozil='$login' AND heslo='' AND zobrazit<>'0' AND zobrazit<>'00' AND (nazev NOT LIKE '%hubněte%' AND nazev NOT LIKE '%hubnutí%' AND nazev NOT LIKE '%hubnout%' AND nazev NOT LIKE '%nadváh%' AND nazev NOT LIKE '%výživ%' AND nazev NOT LIKE '%produkty%' AND nazev NOT LIKE '%kosmetik%' AND nazev NOT LIKE '%hubnete%' AND nazev NOT LIKE '%přivýděl%' AND nazev NOT LIKE '%reklam%' AND nazev NOT LIKE '%vyděl%' AND nazev NOT LIKE '%exekuc%' AND nazev NOT LIKE '%splácen%' AND popis NOT LIKE '%hubněte%' AND popis NOT LIKE '%hubnutí%' AND popis NOT LIKE '%hubnout%' AND popis NOT LIKE '%nadváh%' AND popis NOT LIKE '%výživ%' AND popis NOT LIKE '%produkty%' AND popis NOT LIKE '%kosmetik%' AND popis NOT LIKE '%hubnete%' AND popis NOT LIKE '%přivýděl%' AND popis NOT LIKE '%reklam%' AND popis NOT LIKE '%vyděl%' AND popis NOT LIKE '%exekuc%' AND popis NOT LIKE '%splácen%') rád bych udělal něco ne tak složitého. Využívám tedy jen políčka nazev a popis. Rád bych např. vkládal nejaké texty do jedné proměné aby mi to MySQL "přežvejklo". Díky za rady |
||
Nox Profil |
#2 · Zasláno: 27. 9. 2007, 09:08:30 · Upravil/a: Nox
Možná nějakým poddotazem, nejsem na mysql moc expert, ale udělat si třeba tabulku s těma slovama (navíc to pak budeš lehce globálně editovat
a dát to něco jako and něco NOT LIKE (select Slovo from Oskliva_slova) nebo tak...možná to bude pomalejší, ale imho elegantnější...jestli to takto jde Kdyžtak se mrkni sem (a do souvisejících) http://www.linuxsoft.cz/article.php?id_article=877 |
||
Nox Profil |
#3 · Zasláno: 27. 9. 2007, 09:10:18
Teď se do toho dívám, mohlo by to být
AND něco NOT IN (SELECT Slovo FROM Oskliva_slova) |
||
Tomasekk Profil * |
#4 · Zasláno: 27. 9. 2007, 09:13:25
Nox
diky za rychlou opdpoved, zkusim toto i kdyz jsem nejprve mel namysli, ze bych to nemel pres MySQL ale ze bych to natvrdo nahazel do toho souboru kde mam ten select. Jen ted uvazuji, jestli nejde dat dohromady to, ze by ty oskliva slova vybiral z toho nazvu a popisu soucasne, nebo to bych musel udelat AND nazev NOT IN (SELECT Slovo FROM Oskliva_slova) AND popis NOT IN (SELECT Slovo FROM Oskliva_slova) ??? |
||
Nox Profil |
#5 · Zasláno: 27. 9. 2007, 09:23:06
Tomasekk
Možná AND nazev,popis,něco NOT IN... Ale to je jen tip, můžeš zkusit |
||
Tomasekk Profil * |
#6 · Zasláno: 27. 9. 2007, 09:29:36
Nox
Nefunguje nazev, popis ale take nefunguje NOT IN (SELECT Slovo FROM Oskliva_slova) mam udelany vlastne select tak, abych nacetl pocet diskuzi kde se nenachazi ony slova v nazvu a popisu, takze mi tento select najde pouze pocet tech prispevku, ktere ono slovo v sobe nemaji. ALe i tak mi to nejde |
||
Nox Profil |
#7 · Zasláno: 27. 9. 2007, 09:33:26
No myslel sem že by si měl tabulku Oskliva_slova kde by si měl sloupec Slova kde by byly ty %reklam% atd.
Ale možná to i tak nejede, asi to mám blbě |
||
Tomasekk Profil * |
#8 · Zasláno: 27. 9. 2007, 09:37:58
Nox
Aha, zkusim to tam teda nacpat s tema procentama |
||
Tomasekk Profil * |
#9 · Zasláno: 27. 9. 2007, 09:39:52
Nox
Tak jsem to tam nacpal s procentama a taky nefunguje :-( |
||
Kajman_ Profil * |
#10 · Zasláno: 27. 9. 2007, 09:47:04
A co zkusit
where nazev not regexp '(hubněte|hubnutí|výživ|exekuc)' and popis not regexp '(hubněte|hubnutí|výživ|exekuc)' |
||
Tomasekk Profil * |
#11 · Zasláno: 27. 9. 2007, 09:48:52
Kajman_
Super, to je neco co jsem potreboval, ale kdyz uz jsem si to nacpal do databaze, tak to bude asi uz problem propojit nejak s dalsi MySQL tabulkou, co? |
||
Tomasekk Profil * |
#12 · Zasláno: 27. 9. 2007, 09:50:21
Kajman_
navíc zde ale nepůjde možnost LIKE, nemýlím se? Jde o to, že tam používám jen část jmen a všude jsem pouźíval LIKE %slovo% |
||
Kajman_ Profil * |
#13 · Zasláno: 27. 9. 2007, 09:57:08
Možná by šlo dvěma dotazy, do tabulky bez obalujících %
set @slova=select group_concat(Slova separator '|') from Oslikva_slova; ... where popis not regexp concat('(',@slova,')'); |
||
Tomasekk Profil * |
#14 · Zasláno: 27. 9. 2007, 10:01:56
aha, takze, by mi to nacitalo jako NOT LIKE s tim, ze bych do mysql nacpal slova takto exekuce|vaha|blazen|atd.?
|
||
Kajman_ Profil * |
#15 · Zasláno: 27. 9. 2007, 10:04:14
like a regexp je trošku něco jiného a regexp má problém, že nefunguje pro utf8
http://dev.mysql.com/doc/refman/4.1/en/string-comparison-functions.htm l#operator_regexp |
||
Tomasekk Profil * |
#16 · Zasláno: 27. 9. 2007, 10:21:45
Kajman_
No právě, zkusím se ještě někde podívat jak to jinak vyřešit. Je mi celkem jedno jak, ale nejradeji asi spíš přes tu MySQL, kde budu mit tabulku se zakazanyma slovama a pokud by se alespon jeho cast vyskytovala v popisu a nadpisu, tak by se radek nenacital. Mozna tady nekdo hodi taky nejakou radu jak by to resil |
||
Kajman_ Profil * |
#17 · Zasláno: 27. 9. 2007, 14:00:57
s like by to šlo taky... jen to bude asi hodně pomalé a zatěžující...
select count(distinct(popis)) as pocetdiskuzi from diskuse d where not exists (select o.slovo from Oskliva_slova o where d.nazev like o.slovo or d.popis like o.slovo) A ty slova jsou obalená %. |
||
Časová prodleva: 17 let
|
0