Autor Zpráva
Tomasekk
Profil *
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
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
Teď se do toho dívám, mohlo by to být

AND něco NOT IN (SELECT Slovo FROM Oskliva_slova)
Tomasekk
Profil *
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
Tomasekk
Možná

AND nazev,popis,něco NOT IN...

Ale to je jen tip, můžeš zkusit
Tomasekk
Profil *
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
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 *
Nox

Aha, zkusim to tam teda nacpat s tema procentama
Tomasekk
Profil *
Nox

Tak jsem to tam nacpal s procentama a taky nefunguje :-(
Kajman_
Profil *
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 *
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 *
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 *
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 *
aha, takze, by mi to nacitalo jako NOT LIKE s tim, ze bych do mysql nacpal slova takto exekuce|vaha|blazen|atd.?
Kajman_
Profil *
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 *
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 *
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á %.

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