Intentando hacer de adivino:
Código SQL
[-]WHERE gp.id = (select prefer_valor from prefs where pref_key = 'PRIN')
¿exiten varios registros que su pref_key sea igual a 'PRIN'?
Si es así, estas usando un operador de igualdad que espera un solo registro, de ahí el fallo. Prueba usando:
Código SQL
[-]WHERE gp.id in (select prefer_valor from prefs where pref_key = 'PRIN')
Saludos