Ahoj, tvořím dotaz, který by mi vypsal všechny poznáky i přez sdílení
(poznaka muze být sdílená přímo, patřit kategorii, která je sdílena nebo
uživatel patří do skupiny s kterou je poznámka nebo kategorie sdílena). Pro
zatím sem sestavil funkční dotaz, ale nezdá se mi uplně nejlepší. Nešlo
by to zjednodušit?
Popřípadě vyřešit úplně jinak?
SELECT note.id, note.user_idas userid FROM note
WHERE note.id ISNOTNULLUNIONSELECT note.id, shared.to_id as userid FROM shared
LEFTJOIN note ON (shared.what_id=note.id) AND (shared.what_type="note")
WHERE note.id ISNOTNULLAND shared.to_type="user"UNIONSELECT note.id, shared.to_id as userid FROM shared
LEFTJOIN category ON (shared.what_id=category.id) AND (shared.what_type="category")
LEFTJOIN note ON (note.category_id=category.id)
WHERE note.id ISNOTNULLAND (shared.to_type="user")
UNIONSELECT note.id, user_group.user_idas userid FROM user_group
LEFTJOIN group_of_users ON (group_of_users.id=user_group.group_id)
LEFTJOIN shared ON (shared.to_id=group_of_users.id) AND (shared.to_type = "group")
LEFTJOIN category ON (shared.what_id=category.id) AND (shared.what_type = "category")
LEFTJOIN note ON (note.category_id=category.id)
WHERE note.id ISNOTNULLUNIONSELECT note.id, user_group.user_idas userid FROM user_group
LEFTJOIN group_of_users ON (group_of_users.id=user_group.group_id)
LEFTJOIN shared ON (shared.to_id=group_of_users.id) AND (shared.to_type = "group")
LEFTJOIN note ON (shared.what_id=note.id) AND (shared.what_type = "note")
WHERE note.id ISNOTNULL;
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.