Por favor disculpen la parrafos en mayuscula
Por lo que para este sencillo caso, sería lo mismo o aún mejor hacer...
Código SQL
[-]select h.nopedido, h.codigocliente, c.nombrecliente NOMBRE_CLIENTE,
from pedidos_header h, clientes c
where c.codigocliente=h.codigocliente
[/quote]
Es cierto que el join de tablas es bueno, pero en algunos casos tienen un limite por ejemplo en la busqueda de valores dependientes de otras tablas o tablas con muchas relaciones externas por ejemplo un maestro de clientes facilmente podria tener 5 a 10 relaciones (Ojo Se que se puede crear con una vista y luego reutilizar la vista)
por Ejemplo asumamos que con el prefijo del telefono puedo encontrar el estado(State) del cliente
Código SQL
[-]
CREATE TABLE CLIENTES
CLIENTE CLIENTE ,
PREFIJO_TELEFONO,
CONTINENTE CONTINENTE
PAIS PAIS
CIUDAD CIUDAD
CREATE TABLE PAISES
PAIS PAIS
PAIS_NOMBRE
Código SQL
[-]
CREATE TABLE CIUDADES
CIUDAD CIUDAD
CIUDAD_NOMBRE
CREATE TABLE EMPLEADOS
EMPLEADO EMPLEADO
PAIS PAIS
CIUDAD CIUDAD
SELECT CLIENTE, PAIS_NOMBRE, CIUDAD_NOMBRE FROM CLIENTES C
LEFT OUTER JOIN PAISES P ON C.PAIS= P.PAIS
LEFT OUTER JOIN CIUDAD X ON X.CIUDAD= C.CIUDAD
y asi podemos complicar un join bastante, pero si hacemos funciones que en el manual dice que son de resultado tabla(VARIAS CAMPOS) PODEMOS HACER LAGO PARECIDO A ESTO OJO SIN PROBAR HE LEIDO EL MANUAL SOLAMENTE
Código SQL
[-]
CREATE FUNCTION UBIC GEOGRAFICA(P_PAIS, P_CIUDAD)
RETURNA TABLA
SELECT PAISNOMBRE FROM PAISES INTO O_PAIS_NOMBRE;
SELECT PAISNOMBRE FROM PAISES INTO O_CIUDAD_NOMBRE;
RETURN PAISNOMBRE, CIUDAD_NOMBRE
LA INTRUCCION ANTERIOR QUEDARIA COMO ESTO
Código SQL
[-]
SELECT CLIENTE, UBIC GEOGRAFICA(PAIS,CIUDAD) FROM CLIENTES C
usando la funcion para el maestro de empleados quedaria
Código SQL
[-]
SELECT EMPLEADO, UBIC GEOGRAFICA(PAIS,CIUDAD) FROM EMPLEADOS C
y aqui iniciamos a tener el un mayor poder y ademas reutilizando la mismas funcion, esto msi lo he probado en DB2 del sistema as400 y funciona
Si todo esto es correcto abre nuevas alternativas a la programacion via SQL, esto posiblmente lo tendra firebird en la version 3 pero falta al menos 1 año para poder usarlo