Autor | Zpráva | ||
---|---|---|---|
orel Profil * |
#1 · Zasláno: 9. 4. 2015, 16:47:25
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 |
#2 · Zasláno: 9. 4. 2015, 16:56:04
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 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 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 |
#4 · Zasláno: 9. 4. 2015, 16:59:06
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') |
||
Časová prodleva: 9 let
|
0