Investigando un poco lo resolví de la siguiente manera:
he creado un procedimiento almacenado que me devuelve el ID de la Empresa y su calificación dependiendo siempre de cual de los campos star_x esta en 1. el código en el IBExpert es el siguiente :
Código SQL
[-]
create procedure EMPRESAS_CON_CALIFICACIONES
returns (
EMPRESA_ID integer,
CALIFICACION integer)
as
declare variable EID integer;
declare variable ST integer;
declare variable ST_1 integer;
declare variable ST_2 integer;
declare variable ST_3 integer;
declare variable ST_4 integer;
declare variable ST_5 integer;
begin
for select ID from empresas into :eid do
begin
select star_1, star_2, star_3, star_4, star_5 from empresas_star
where empresas_star.empresas_id = :eid into :ST_1, :ST_2, :ST_3, :ST_4, ST_5;
if( :ST_1 = 1 ) then
ST = 1;
else if( :ST_2 = 1 ) then
ST = 2;
else if ( :ST_3 = 1 ) then
ST = 3;
else if ( :ST_4 = 1 ) then
ST = 4;
else if ( :st_5 = 1 ) then
ST = 5;
Calificacion = ST;
Empresa_ID = :eid;
suspend;
end
END
de esta manera tengo las calificaciones de las empresas, asociadas por el ID, luego hago una consulta, donde mediante un INNER JOIN con el procedimiento almacenado(utilizado como una tabla mas ), tengo los datos de las empresas y la calificacion de cada una de ellas, la consulta es la siguiente:
Código SQL
[-]
select
empresas.id,
empresas.nombre,
empresas.direccion,
empresas.postal,
empresas.telefono_1,
empresas_con_calificaciones.calificacion,
from empresas
inner join empresas_con_calificaciones on (empresas.id = empresas_con_calificaciones.empresa_id)
No se si es la forma correcta de resolver el problema, quizas exista alguna mas simple .
Espero que le sirva a alguien mas ...
Saludos.