MySQL-ben ez pontosan mit csinál?
SELECT cikk.id FROM cikk WHER AND (cikk.cim LIKE '%hell%' OR cikk.tartalom LIKE '%hell%' GROUP BY cikk.id, ORDER BY cikk DESC, CASE WHEN LOCATE('hell', cikk.cim) = 0 THEN 999999 ELSE LOCATE('hell', cikk.cim) END, CASE WHEN LOCATE('hell', cikk.cim) = 0 THEN 999999 ELSE LOCATE('hell', cikk.tartalom) END, cikk.hozzadva DESC
Egy olyasmi kellene, hogy azok a cikkek kerüljenek előre, ahol a címnek az elejéhez van közel a keresőszó, majd utána azok, ahol a szövegnek az elejéhez van közel a keresőszó. A 99999-et azért raknám bele, hogy amire nem igaz a találat, azok menjenek jó hátra.
Köszönöm
Nem próbáltam ki, csak bedobok egy ilyet.
(Az aláhúzás csak a behúzás miatt, hogy látni lehessen belől valamit.)
SELECT
cikk.id,
CASE LOCATE('hell', cikk.cim)
__WHEN 0 THEN 't'
__ELSE 'c'
END AS tmpfld1,
CASE LOCATE('hell', cikk.cim)
__WHEN 0 THEN LOCATE('hell', cikk.tartalom)
__ELSE LOCATE('hell', cikk.cim)
END AS tmpfld2
FROM cikk
WHERE cikk.cim LIKE '%hell%' OR cikk.tartalom LIKE '%hell%'
ORDER BY tmpfld1, tmpfld2;
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!