Zkus sem dat strukturu tabulek, vypsat podminky, vypsat, jake k nim pouzivas dotazy. Takhle jenom opakujes, ze ti nejaka kombinace nejede. To ti lze rici jen, ze mas spatne sql dotaz. idealne pro kazdou kombinaci mit samostatny sql dotaz. treba mas spatne navrzene i tabulky.
tabulka kraju - id_kraj, nazev
tabulka mest - id_mesto, id_kraj, nazev - propojuje mesta s krajem, pouzijes pro ukladani do tab. zbozi_kraj_mesto
tabulka zbozi - id_zbozi, nazev
tabulka zbozi_kraj_mesto - id_zbozi, id_kraj, id_mesto - propojuje zbozi s mestem a krajem
tabulka zbozi_kategorie - id_zbozi, id_kategorie
tabluka kategorie - id_kategorie, nazev
Chces vypsat vsechno v kraji olomoucky (5), co je pes (7)?
SELECT
a.id_zbozi,
a.id_kraj,
b.id_kategorie
FROM
zbozi_kraj_mesto a
LEFT JOIN zbozi_kategorie b ON b.id_zbozi = a.id_zbozi
WHERE
a.id_kraj=5 AND
b.id_kategorie=7
GROUP BY
a.id_zbozi
Pokud tam chces popisky, tak si najoinujes i tabulky s nazvy.
Grupovani tam je, pac to vysype more zbozi se stejnym id. (s tim grupovanim tam mam mozna chybku, vim, ze se tam kdesi do select, where tusim musi vypsat vsechny sloupce a mozna to plati pro jiny typ pouziti group)
Chces vic kraju, mest nebo kategorii?
WHERE
(a.id_kraj=5 OR a.id_kraj=2) AND
b.id_kategorie=7
WHERE
a.id_kraj IN (5,2) AND
b.id_kategorie=7
WHERE
(a.id_mesto IN (1,6) OR a.id_kraj=11) AND -- ve meste 1 a 6 nebo kraji 11
b.id_kategorie IN (7,8) -- pes nebo kocka
WHERE
(a.id_mesto IN (1,6) OR a.id_kraj=11) AND -- ve meste 1 a 6 nebo kraji 11
b.id_kategorie=7 AND b.id_kategorie=8 -- pes a kocka (tusim to lze napsat podobne jako IN, ale ted si nezvpomenu na prikaz)