Autor | Zpráva | ||
---|---|---|---|
siginigin Profil * |
#1 · Zasláno: 23. 6. 2010, 17:31:13
zdravim, narazil som na mensi problem: mam asi 80 poli v tabulke a chcem vybrat do vysledku tie stlpce, v ktorych zaznamy obsahuju urcitu zadanu hodnotu, asi nejak takto:
select stlpce from tabulka where stlpce like "%text%" ak hodnota v niektorom stlpci obsahuje %text% tak tieto stlpce budu vo vysledku. takto rucne $q = mysql_query ("select stlpec1 from tabulka where stlpec1 like "%text%""); if (mysql_num_rows($q) > 0){ // spracuj stlpec1 } $q = mysql_query ("select stlpec2 from tabulka where stlpec2 like "%text%""); if (mysql_num_rows($q) > 0){ // spracuj stlpec2 } // takto spracuj dalsich 78 stlpcov $q = mysql_query ("select stlpec80 from tabulka where stlpec80 like "%text%""); if (mysql_num_rows($q) > 0){ // spracuj stlpec80 } mi to pride dost neefektivne, najma ked sa pocet stlpcov moze menit v buducnosti. nazvy stlpcov su rozne a neda sa na ne pouzit ani cyklus na zjednodusenie aspon php skriptu, ked uz nie objemu zataze mysql servera. velka vdaka za radu. |
||
Alphard Profil |
#2 · Zasláno: 23. 6. 2010, 17:52:07
Není ta tabulka špatně navržená? Je v souladu s normalizačními pravidly?
V současném stavu těžko radit. Nezdá se mi normální hledat stejnou hodnotu v 80 sloupcích. Možná sestavit dotaz ve stylu like OR like a pak v aplikaci přebrat sloupce. SELECT * FROM `tabulka` WHERE (`sloupec1` LIKE '%ahoj%' OR `sloupec2` LIKE '%ahoj%' OR `sloupec3` LIKE '%ahoj%') |
||
siginigin Profil * |
#3 · Zasláno: 23. 6. 2010, 18:56:20
nuz nepoznam normalizacne pravidla, ale stlpce su typu varchar(200). jedna sa o zoznam pc a ich parametrov. cielom je aby som si mohol vyhladat napriklad vsetky pc , ktore maju pod 128MB ram a k tomu niekde na boku tabulky budem mat zobrazeny vyhladavaci formular. v nom budu vypisane polia a ku kazdemu polu bude pozgrupovane hodnoty z tohto pola. napr.
select Memory from tabulka group by Memory vysledkom coho bude vo vyhladavacom formulari: RAM 128MB 256MB 1GB ... pomocou ajaxu potom mozem kliknutim na niektoru polozku doplnit kriteria do vyhladavania. tento system funguje aj v niektorych internetovych obchodoch napr. tu - kriteria vyhladavania si mozem pridavat a odoberat podla lubovole. je to v podstate aj napoveda, ked neviem co hladam. |
||
Keeehi Profil |
#4 · Zasláno: 23. 6. 2010, 19:23:22
siginigin:
Potom použij co napsal Alphard. Jen s jednou úpravou: OR -> nahraď za AND pokud výsledek má splňovat všechny zadané parametry. |
||
siginigin Profil * |
#5 · Zasláno: 23. 6. 2010, 19:34:01
Alphard to napisal dobre, s pouzitim OR budu vo vysledku tie zaznamy, ktore potrebujem. akurat ze tam bude vsetkych 80 stlpcov, aj ked napriklad %text% sa bude nachadzat len v zaznamoch v stlpci 15, 24, 56. ja by som chcel prave len tieto tri. nechcem davat do vyhladavacieho formulara vsetkych 80 parametrov, ked sa v nich hladany vyraz nenachadza a tiez ze ten formular by bol pekne dlhy, ak v nom budu vsetky stlpce...
jedna sa mi len o naplnenie vyhladavacieho formulara vhodnymi poliami = kriteriami a to tak aby som nemusel prehladavat kazde jedno pole a kontrolovat ci neobsahuje hladany vyraz. |
||
Časová prodleva: 14 let
|
0