powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос.
9 сообщений из 9, страница 1 из 1
SQL запрос.
    #32264679
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем присутствующим .
Прошу помочь в формировании запроса.
Есть ситуация:

таблица table1
code_doc code_rgn
0000000001 01
0000000002 02
0000000003 03
0000000004 01
0000000005
0000000006 01
0000000007
0000000008 03
...............................

таблица table2
code_rgn name_rgn abbr_rgn .....
01 наименование 1 обозначение 1
02 наименование 2 обозначение 2
03 наименование 3 обозначение 3
...............................

Нужно получить следующий результат:
code_doc code_rgn name_rgn
0000000001 01 наименование 1
0000000002 02 наименование 2
0000000003 03 наименование 3
0000000004 01 наименование 1
0000000005
0000000006 01 наименование 1
0000000007
0000000008 03 наименование 3
.............
Если делаю так:
Код: plaintext
1.
2.
3.
SELECT CODE_DOC,CODE_RGN,NAME_RGN;
           FROM        TABLE1,TABLE2;
           WHERE      TABLE2.CODE_RGN=TABLE1.CODE_RGN

то соотвественно получаю следующий результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
code_doc      code_rgn    name_rgn
 0000000001     01              наименование  1 
 0000000002     02              наименование  2 
 0000000003     03              наименование  3 
 0000000004     01              наименование  1 
 0000000006     01              наименование  1 
 0000000008     03              наименование  3 

т.е. записи с кодами 0000000005 и 0000000007 пропадают, так как значения из полей code_rgn для таких записей пустые..мне же надо их вытащить, но чтобы значения поля name_rgn оставалось незаполненным...

Наверно, вопрос глупый, но вот что-то не нашел я простого решения без предварительной обработки..
...
Рейтинг: 0 / 0
SQL запрос.
    #32264689
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT TABLE1.CODE_DOC,TABLE1.CODE_RGN,TABLE2.NAME_RGN;
FROM TABLE1;
left join table2 on TABLE2.CODE_RGN=TABLE1.CODE_RGN
...
Рейтинг: 0 / 0
SQL запрос.
    #32264694
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так просто?!
Жаль, что нет здесь системы оценок, как на rsdn.ru (не реклама ;) )
Ща проверим.

С уважением
...
Рейтинг: 0 / 0
SQL запрос.
    #32264735
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ. Выражение правильно, ввод вручную возвращает нужный результат, но вот как сделать при помощи построителя представления? У меня получается выражение такого плана:
Код: plaintext
1.
2.
3.
SELECT TABLE2.CODE_RGN;
FROM  {oj table2 TABLE2 LEFT OUTER JOIN table1 TABLE1;
ON  TABLE2.CODE_RGN = TABLE1.CODE_RGN }


как получить выражение
table1 TABLE1 LEFT OUTER JOIN table2 TABLE2
вместо
table2 TABLE2 LEFT OUTER JOIN table1 TABLE1
при помощи построителя, не пойму...
...
Рейтинг: 0 / 0
SQL запрос.
    #32264755
chagoserg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у построителя есть глюки... я им не пользуюсь... предпочитаю писать ручками
...
Рейтинг: 0 / 0
SQL запрос.
    #32264764
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
учту....просто хотелось, чтобы оставалась возможность работать с базой данных через постороитель....:(
...
Рейтинг: 0 / 0
SQL запрос.
    #32264947
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в качестве источника не более 2 таблицы, то построитель работает без проблем.

Для настройки связи (LEFT, RIGHT, INNER) дважды щелкни левой клавишей мыши на линии соединяющей 2 таблицы. Либо выбери нужный тип соединения на закладке JOIN в первом столбце.

В твоем случае, ты видимо первой (физически) вставил таблицу Table2, поэтому по умолчанию связь пошла к ней (LEFT JOIN). Тебе нужно либо удалить эту таблицу и вставить заново (тогда в качестве базовой примется таблица Table1), либо заменить связь на RIGHT JOIN.
...
Рейтинг: 0 / 0
SQL запрос.
    #32265288
Dushes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, сначала я добавляю таблицу table1, затем table2.
В любом случае получаю table2 TABLE2 LEFT OUTER JOIN table1 TABLE1.
Right join не разрешается настроить - речь идет о построителе remote view (vfp 6.0)

Вот такие пироги - приходится прописывать ручками :(.
...
Рейтинг: 0 / 0
SQL запрос.
    #32265343
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы об одном и том же построителе говорим?

Только что в VFP6SP5 сделал Remote View к 2 таблицам из MS SQL7

То что отображено на закладке JOIN в построителе, то и отображается в сформированном предложении SQL примерно так

FROM {oj dbo.Devices Devices LEFT OUTER JOIN dbo.TypeDevs Typedevs ;
ON Devices.TypeDevID = Typedevs.TypeDevID }

Удалил строку и сделал наоборот

FROM {oj dbo.TypeDevs Typedevs LEFT OUTER JOIN dbo.Devices Devices ;
ON Typedevs.TypeDevID = Devices.TreeDevID }

Никаких проблем.

Другой вариант. Удалил линию отображающую связь между таблицами и создал ее заново (левой клавишей мыши на поле одной таблицы и не отпуская перетащить на поле другой). Двойной щелчок мыши на этой линии открывает дополнительное окно для настройки связи по JOIN. В раскрывающемся списке нахожу "Left Join" получается запрос вида

FROM dbo.Devices Devices, dbo.TypeDevs Typedevs;
WHERE Devices.TreeDevID *= Typedevs.TypeDevID

Снова вхожу в связь и выбираю "Right Join" получаю

FROM dbo.Devices Devices, dbo.TypeDevs Typedevs;
WHERE Devices.TreeDevID =* Typedevs.TypeDevID

Опять все хорошо!

Как ты пытаешься эту связь установить в построителе. И кстати, с каким сервером?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / SQL запрос.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]