Autor | Zpráva | ||
---|---|---|---|
freeTel Profil * |
Zdravím, mám snad již poslední dotaz. chci vyhledat produkty i bez diakritiky, ale řadit je podle zadaného slova. Pokud se vypíše šíp, tak nejdří to seřadí podle šíp a potom sip. Zase hodiny experimentuji a pořád v bludným kruhu. Věřím, že konstrukci mám správnou a jen mi něco malého utíká. Děkuji
$dotaz = "SELECT count(id) as kolik,id,nazev FROM produkty WHERE LOWER(nazev) LIKE '%".$slovo."%' HAVING (kolik=0 AND LOWER(nazev) LIKE '%".$slovo."%' COLLATE utf8_general_ci) GROUP BY nazev COLLATE utf8_czech_ci ASC LIMIT 7"; ještě dodatek ať jsem přesnější: to samé i obráceně při výpisu sip nejdříve sip a potom šíp |
||
Kajman Profil |
#2 · Zasláno: 13. 3. 2020, 22:33:42
Použijte union.
|
||
freeTel Profil * |
#3 · Zasláno: 13. 3. 2020, 22:49:44
To jsem už zkoušel a výsledek je stejný. Pořád to neřadí prioritně podle zadaného slova uživatele.
$dotaz = "SELECT id,nazev FROM produkty WHERE LOWER(nazev) LIKE '%".$slovo."%' UNION SELECT id,nazev FROM produkty WHERE LOWER(nazev) LIKE '%".$slovo."%' COLLATE utf8_general_ci ORDER BY nazev COLLATE utf8_czech_ci ASC, nazev COLLATE utf8_general_ci ASC"; |
||
Kajman Profil |
#4 · Zasláno: 13. 3. 2020, 23:15:57
Např. si můžete přidat sloupec značící ve kterém dotazu se řádek našel a podle něho řadit. Pro možnost duplikátů je tam přidáno group by.
SELECT id, nazev FROM (SELECT id,nazev, 1 zdroj FROM produkty WHERE LOWER(nazev) LIKE '%".$slovo."%' UNION SELECT id,nazev, 2 zdroj FROM produkty WHERE LOWER(nazev) LIKE '%".$slovo."%' COLLATE utf8_general_ci ) x GROUP BY id, nazev ORDER BY min(zdroj) |
||
freeTel Profil * |
#5 · Zasláno: 13. 3. 2020, 23:51:06
Tak tenhle dotaz by jsem dohromady nedal. Funguje to dobře, ale na tohle je důležitý mít víc důvtip jak znalosti a vy máte obojí. Vždy mi dobře poradíte, Děkuji a přeji hezký víkend
|
||
Časová prodleva: 4 roky
|
0