brutalsuperman
Почему остальные не заполняет?
А почему он должен их заполнять? Кто и где вам обещал, что это должно работать так? И что он, кстати, по вашему должен был бы заполнить если бы значение value было бы заполнено в двух из этих таблиц? Чтобы сделать, то что вы хотите, надо самому написать выражение. В разных базах данных они могут отличатся, вы какую используете? Для поддерживающих SQL2003 это будет выглядеть примерно так:
select d.type,d.name ,
case
when not u.value is null then u.value
when not s.value is null then s.value
when not c.value is null then c.value
else ''
end as 'value'
from doc d
left join udoc u on( d.name =u.name
and d.type=u.type)
left join sdoc s on (d.name=s.name
and d.type=s.type)
left join cdoc c on (d.name=c.name
and d.type=c.type);
PS: ну или выводите все три столбца и обрабатывате уже в вызывающем коде.