powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите в запросе с INLIST
12 сообщений из 12, страница 1 из 1
Помогите в запросе с INLIST
    #39018624
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня!
Имеются таблицы следующего вида:

авторТаблица 1: BS
BS1 BS2 SUM
123 1234 55
314 3456 66
555 6456 66
211 9876 34
266 2789 33
982 8789 88
721 5674 31
330 4563 73


авторТаблица 1: RBS
ID ARTICLE
1 1234
1 3456
1 6456
1 9876
2 2789
2 8789
2 5674
3 4563

Выполняю запрос select BS.BS1, BS.BS2, BS.SUM from BS where INLIST(rbs.id, '1') т.е. я должен выбрать из первой таблицы только те записи, которые совпадают поле BS2 во 2 таблице с полем Article. Есть у кого идеи?
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39018768
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
select BS.BS1, BS.BS2, BS.SUM from BS where t.bs2=rbs.ARTICLE



так не получается?
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39018784
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или Вам можно с вложенным подзапросом для фильтрации в RBS?
Код: sql
1.
select BS.BS1, BS.BS2, BS.SUM from BS where BS.BS2 in (select RBS.ARTICLE from RBS where RBS.id=1)



т.е. выполняется вложенный подзапрос, а дальше из таблицы BS выбираются только те значения BS2 которые равны выбранным RBS.ARTICLE из подзапроса. Фильтрация значений RBS.ARTICLE происходит
Код: sql
1.
select RBS.ARTICLE from RBS where RBS.id=1

в данном запросе.
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39018793
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну или 3-й вариант:
Код: sql
1.
select BS.BS1, BS.BS2, BS.SUM from BS where t.bs2=rbs.ARTICLE and rbs.id=1
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019254
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
T1gRa_NTНу или 3-й вариант:
Код: sql
1.
select BS.BS1, BS.BS2, BS.SUM from BS where t.bs2=rbs.ARTICLE and rbs.id=1



Такой запрос берет только первую строку (ID=1 ARTICLE=1234), следующих не берет:

ID ARTICLE
1 3456
1 6456
1 9876
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019276
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точно.
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019292
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
T1gRa_NTИли Вам можно с вложенным подзапросом для фильтрации в RBS?
Код: sql
1.
select BS.BS1, BS.BS2, BS.SUM from BS where BS.BS2 in (select RBS.ARTICLE from RBS where RBS.id=1)



т.е. выполняется вложенный подзапрос, а дальше из таблицы BS выбираются только те значения BS2 которые равны выбранным RBS.ARTICLE из подзапроса. Фильтрация значений RBS.ARTICLE происходит
Код: sql
1.
select RBS.ARTICLE from RBS where RBS.id=1

в данном запросе.

Если сделать таким образом моя программа молчит.
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019298
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выполнении
Код: sql
1.
select RBS.ARTICLE from RBS where RBS.id=1


из таблицы 2 берутся нужные значения?
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019329
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
T1gRa_NTПри выполнении
Код: sql
1.
select RBS.ARTICLE from RBS where RBS.id=1


из таблицы 2 берутся нужные значения?

в ms sql да берутся все
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019332
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал 2 курсора по вашим данным:
Код: sql
1.
2.
CREATE CURSOR bs (BS1 N(3),BS2 N(4),SUM N(2))
CREATE CURSOR RBS(id N(1),ARTICLE N(4))


ularsoftавторТаблица 1: BS
BS1 BS2 SUM
123 1234 55
314 3456 66
555 6456 66
211 9876 34
266 2789 33
982 8789 88
721 5674 31
330 4563 73


авторТаблица 1: RBS
ID ARTICLE
1 1234
1 3456
1 6456
1 9876
2 2789
2 8789
2 5674
3 4563


после выполнения запроса:
Код: sql
1.
SELECT bs.bs1,bs.bs2,bs.sum FROM bs WHERE bs.bs2 in (SELECT rbs.article FROM rbs WHERE rbs.id=1)


получил следующие данные:
bs1bs2sum123123455314345666555645666211987634
т.е. из таблицы BS выбрались данные у которых BS2=ARTICLE И RBS.ID=1 если необходимы все данные без фильтрации по id то:
Код: sql
1.
SELECT bs.bs1,bs.bs2,bs.sum FROM bs WHERE bs.bs2 in (SELECT rbs.article FROM rbs)


Наглядный вариант через INNER JOIN:
Код: sql
1.
2.
SELECT bs.bs1,bs.bs2,bs.sum,rbs.id,rbs.ARTICLE  from bs
INNER JOIN rbs ON bs.bs2=rbs.article 


Он найдет и объединит поля только в тех записях где bs.bs2=rbs.article аналогичен указному выше.
Больше и наглядно про JOINы тут:
http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019354
T1gRa_NT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ularsoftв ms sql да берутся все
Вот тут стоп!
Вы хотите выбрать значения из ms sql средствами FoxPro и выгрузить в курсор?
Я это делаю функцией SQLEXEC, НО:

сам синтаксис запроса должен быть MS SQL и никак не фокса!

Пробуйте запросы с JOIN на сервере, как только все хорошо просто копируйте в FoxPro.
При превышении длины бейте на части и через макроподстановки.
...
Рейтинг: 0 / 0
Помогите в запросе с INLIST
    #39019395
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
T1gRa_NTularsoftв ms sql да берутся все
Вот тут стоп!
Вы хотите выбрать значения из ms sql средствами FoxPro и выгрузить в курсор?
Я это делаю функцией SQLEXEC, НО:

сам синтаксис запроса должен быть MS SQL и никак не фокса!

Пробуйте запросы с JOIN на сервере, как только все хорошо просто копируйте в FoxPro.
При превышении длины бейте на части и через макроподстановки.

Спасибо тебе T1gRa_NT. Все тип-топ.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите в запросе с INLIST
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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