seria algo asi:
Código:
select t.origen, d.descripcion, sd.descripcion
from tabla t
left join dependencia d on d.codigo = t.origen
left join sub_dependencia sd on sd.codigo = t.origen
en el caso anterior, puede ser que el campo 'origen' no tenga un registro en alguna de las tablas. en este caso o bien 'd.descripcion' o 'sd.descripcion' sera nulo, pero no ambos. en tu pagina .asp deberas escoger entre ambos campos, para mostrar el correcto.
en tu caso, seria un poco mas complicado, porque tienes dos campos 'origen' y 'destino' que pueden hacer referencias a dos tablas.
seria algo asi:
Código:
select
t.origen, d1.descripcion, sd1.descripcion, -- descripciones de 'origen'
t.destino, d2.descripcion, sd2.descripcion -- descripciones de 'destino'
from tabla t
left join dependencia d1 on d1.codigo = t.origen
left join sub_dependencia sd1 on sd1.codigo = t.origen
left join dependencia d2 on d2.codigo = t.destino
left join sub_dependencia sd2 on sd2.codigo = t.destino
la diferencia entre 'left join' e 'inner join' es que el primero te sigue presentando el registro aunque no exista un registro correspondiente en la otra tabla. 'inner join' es un producto cartesiano entre tablas.