|
Вопрос для гуру СКД | ☑ | ||
---|---|---|---|---|
0
Fragster
гуру
15.05.14
✎
11:56
|
Есть СКД с запросом вида:
ВЫБРАТЬ "А" КАК Поле ПОМЕСТИТЬ Т ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Б" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "В" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "А" КАК Поле, 1 КАК Значение1 ПОМЕСТИТЬ Т1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "Б" КАК Поле, 1 КАК Значение2 ПОМЕСТИТЬ Т2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Поле, Т1.Значение1, Т2.Значение2 {ВЫБРАТЬ Поле, Значение1, Значение2} ИЗ Т КАК Т {ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т1 КАК Т1 ПО Т.Поле = Т1.Поле} {ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т2 КАК Т2 ПО Т.Поле = Т2.Поле} Сейчас работает так: Выбираешь Поле - выводится все: А Б В дополнительно выбираешь Значение1 - выводится А 1 вместо Значение1 выбираешь Значение2 - Выводится Б 1 Выбираешь И Значение1 И Значение2 - ничего не выводится. Как сделать так, чтобы в таком случае выводилось так: А 1 _ Б _ 1 и при этом сохранилось поведение из текущего варианта, т.е. соединение только необходимых таблиц, ну и при выборе одного значения выводилось только то, что есть в соответствующей таблице |
|||
1
Fragster
гуру
15.05.14
✎
12:16
|
Никто не понял, что надо или никто не может так сделать?
|
|||
2
moonrun
15.05.14
✎
12:33
|
(0)ВЫБРАТЬ
"А" КАК Поле ПОМЕСТИТЬ Т ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Б" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "В" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "А" КАК Поле, 1 КАК Значение1 ПОМЕСТИТЬ Т1 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "Б" КАК Поле, 1 КАК Значение2 ПОМЕСТИТЬ Т2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.Поле КАК Поле, Т1.Значение1 КАК Значение1, Т2.Значение2 КАК Значение2 {ВЫБРАТЬ Поле, Значение1, Значение2} ИЗ Т КАК Т {ЛЕВОЕ СОЕДИНЕНИЕ Т1 КАК Т1 ПО Т.Поле = Т1.Поле} {ЛЕВОЕ СОЕДИНЕНИЕ Т2 КАК Т2 ПО Т.Поле = Т2.Поле} ГДЕ (ЕСТЬNULL(Т1.Значение1, "---") <> "---" ИЛИ ЕСТЬNULL(Т2.Значение2, "---") <> "---") |
|||
3
Fragster
гуру
15.05.14
✎
12:48
|
(2) 1. Если выбрать только Поле, то выводится все равно только то, где есть Значение1 или Значение2
2. Всегда происходит соединение, т.е. не работает необязательность таблиц |
|||
4
mikecool
15.05.14
✎
12:50
|
не совсем понял, но может попробовать сделать через разные источники данных, а не одним запросом?
|
|||
5
Fragster
гуру
15.05.14
✎
13:06
|
(4) как сделать через разные наборы?
|
|||
6
Пеппи
15.05.14
✎
13:10
|
(5) наверное все же через разные схемы. Соединение остается всегда
|
|||
7
Fragster
гуру
15.05.14
✎
13:49
|
(6) в варианте (0) соединение появляется только когда выбираешь поле из соответствующей таблицы
|
|||
8
catena
15.05.14
✎
13:51
|
(7)Тебе надо два соединения, а они противоречат друг другу.
|
|||
9
echo77
15.05.14
✎
14:39
|
(0) Схему выложи на файловый ресурс - я тебе скажу что надо сделать
|
|||
10
Fragster
гуру
16.05.14
✎
11:03
|
||||
11
Fragster
гуру
16.05.14
✎
11:04
|
(8) как сделать чтобы не противоречили?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |