WHERE (user_id = 17 OR user_id IS NULL) AND name = "menu_items"
E solo per ripulire il resto della query:
Il id
nelle preferenze definite non è necessario che ci sia, usa una chiave combinata di preference_id
e user_id
invece.
Se l'id
di preferences
è stato chiamato preference_id
, il lungo ON
l'istruzione potrebbe essere sostituita con USING(preference_id)
Il IF
la funzione può essere sostituita con COALESCE(defined_value, default_value)