Форум сайта python.su
Есть 4 таблици. Doc, UDoc, SDoc, CDoc. Doc- Name Type, остальные Name Value Type, если тип 1 выводим name и value из udoc, если 2 то из sdoc, если 3 то из cdoc. Код который я добавил выводит все записи из Doc и добавляет колонку Value, но заполняет только одно значение из cdoc( которое в последнем join). Почему остальные не заполняет?
select d.type,d.name , 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);
Офлайн
select d.type,d.name , с.value, s.value, u.value
Офлайн
FishHookЯ уже так пробовал, в результате создает три колонки Value Value1 Value2
Офлайн
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);
Отредактировано PooH (Янв. 12, 2016 05:32:31)
Офлайн