Autor Zpráva
orel
Profil *
Zdravím,

mám aktuálně problém s vyhledáváním na webu, k věci: na webu si zaškrtne checkboxy, které mají ID ( 1,2,3,4,5,6,7,8,9....) a podle toho se mu zobrazí data.
Tj, může zvolit např. jen 5 nebo (pole) 4,6,10,14.

V tabulce mají data ve sloupci lom taktéž hodnoty, např.

Hora 1 - 456.222 - 888.145 - blabla - 5,6,12,22,30
Hora 2 - 456.222 - 888.145 - blabla - 5
Hora 3 - 456.222 - 888.145 - blabla - 2,4,8,13,14,21,22
..

Aktuálně se to snažím vyhledat pomocí IN, ovšem to mi ukáže pouze pokud to obsahuje i ID 2 i 4, ale já potřebuji všechny, které obsahují ID 2 nebo 4 nebo obojí. :

SELECT * FROM `hory` WHERE `active` = '1' AND `lom` IN(2,4) ORDER BY `date_added` DESC LIMIT 0, 12

Pomocí LIKE to vyřešit nemohu, např. kdybych dal %2% tak to může vyhledat i 32,20...

Umí někdo poradit jak v tom sloupci vyhledávat?

...WHERE `lom` IN(".implode(",", array_map('intval', $get_id)).")...
lionel messi
Profil
orel:
V tabulce mají data ve sloupci lom taktéž hodnoty, např.
>
Hora 1 - 456.222 - 888.145 - blabla - 5,6,12,22,30
Hora 2 - 456.222 - 888.145 - blabla - 5
Hora 3 - 456.222 - 888.145 - blabla - 2,4,8,13,14,21,22
Zaváňa to nesprávnym databázovým návrhom, vrelo odporúčam prepracovať do korektnej podoby.
juriad
Profil
Některé časteji řešené dotazy pro MySQL - FAQ » Více hodnot ve sloupci
Máš to blbě navržené. Musíš přidat další tabulku. Výsledek bude něco jako:
Hora 1 - 456.222 - 888.145 - blabla
Hora 2 - 456.222 - 888.145 - blabla
Hora 3 - 456.222 - 888.145 - blabla
a druhá:
Hora 1 - 5
Hora 1 - 6
Hora 1 - 12
Hora 1 - 22
Hora 1 - 30
Hora 2 - 5
Hora 3 - 2
Hora 3 - 4
Hora 3 - 8
Hora 3 - 13
Hora 3 - 14
Hora 3 - 21
Hora 3 - 22
Samozřejmě, že výhodné bude nepoužívat řetězec Hora #, ale nějaké číselné ID.

Pak dotaz bude vypadat přibližně takto:
SELECT h.*
FROM hory h
JOIN lomy l ON h.id = l.hora
WHERE h.active = '1' AND l.lom IN(2,4)
GROUP BY h.id
ORDER BY date_added DESC
LIMIT 0, 12
petr 6
Profil
WHERE active = 1 AND (lom LIKE '2,%' OR lom LIKE '%,2' OR lom LIKE '%,2,%' OR lom = '2' OR lom LIKE '4,%' OR lom LIKE '%,4' OR lom LIKE '%,4,%' OR lom = '4')
Je ti snad jasné, kam to povede... takže změnit návrh databáze, viz Některé časteji řešené dotazy pro MySQL - FAQ » Více hodnot ve sloupci

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