Hirdetés
Új hozzászólás Aktív témák
-
válasz
csabyka666
#2177
üzenetére
a dolog lényege, hogy php-ben összefaragod stringműveletekkel a keresési feltételt, és utána egy keresést futtatsz, mert ha több utasításban keresel, akkor a distinctből falra hányt borsó lesz.
azt nem értettem eddig a kérdésedben, hogy neked a keresőszót több mezőn is egyszerre kellene értelmezni, eddig azt hittem, csak egyen.
erre meg az a megoldás, hogy az adatbáziskezelővel összerakatod egy stringbe az összes mezőt, amiben keresni akarsz, és arra adod meg a kereső kifejezést.tehát ha van mondjuk egy név, egy leírás, egy gyártó meződ, akkor valahogy így:
név||'|'||leírás||'|'||gyártó like '%elsőkeresőszó%' (postgresql szintaktikával, a || a postgresben string konkatenáció)
és ebből csinálsz logikai vagy-gyal függvényt. vagy csinálni kell rá egy nézettáblát, amin keresel, az lehet, gyorsabb.
magyarul keresel egy olyan karaktert, ami biztosan nem fordul elő az adatokban, hogy elválaszd a szavakat (nekem erre a csővezetékjel a kedvenc), és az összes mező tartalmát összerakod egy stringbe ezzel a jellel elválasztva, majd ezen a stringen csinálod a like-ot. ez egy logikai kifejezés, ebből csinálsz vagy-gyal egy végső logikai kifejezést.
másik, nem annyira elegáns megoldás, ha csinálsz egy külön táblát, amibe ideiglenesen tárolod a keresések részhalmazait, csak akkor ott figyelni kell rá, hogy párhuzamos használat esetén mi lesz.
szóval egy táblába beleszórod azokat az azonosítókat, amely rekordokban az aktuális keresőszó megvan, majd csinálsz egy selectet belőle, distinct-tel, valahogy így:for i in (keresendő szavak listája sorban); do
for j in (keresett mezők listája sorban); do
sql="insert into temptabla (id) select id from tabla where $j like '%$i%';
done
done
select distinct id from temptabla;ez nyilván nem helyes program, csak egy utalás arra, hogy hogyan kellene. szerintem ez a második megoldás kicsit parasztos, de mindegy...
Új hozzászólás Aktív témák
- BESZÁMÍTÁS! GIGABYTE A520M R7 3800X 16GB DDR4 512GB SSD RX 9060 XT 16GB Zalman T3 Plus CM 650W
- BESZÁMÍTÁS! ASROCK H510M i5 11400F 16GB DDR4 1TB SSD RTX 4060 8GB Zalman S2 TG Cooler Master 650W
- BESZÁMÍTÁS! ASROCK H510M i5 11400F 16GB DDR4 1TB SSD RX 7600 8GB Zalman S2 TG Cooler Master 650W
- BESZÁMÍTÁS! GIGABYTE A520M R5 5500 16GB DDR4 250GB SSD 120GB SSD GTX 1060 3GB Zalman T3 Plus 400W
- iPhone 15 Pro 128GB Natural Titanium
- GYÖNYÖRŰ iPhone 13 Pro 256GB Sierra Blue - 1 ÉV GARANCIA, Kártyafüggetlen, 100% Akkumulátor,MS3379
- Keresünk iPhone 14/14 Plus/14 Pro/14 Pro Max
- Macbook Air M3 15" 16GB 256GB 100%
- BESZÁMÍTÁS! MSI Z370 i7 8700K 16GB DDR4 500GB SSD RTX 3060 12GB Rampage SHIVA ADATA 600W
- Panasonic CF-XZ6 AIO all-in-one laptop tablet 2k touch i5-7300u speciális ütésálló rugged
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


