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

Имеются 3 таблицы в MS SQL 2008.
1. KLIENT - справочник клиентов
2. SPROMOTER - учредители клиентов
3. DBMASLC - массив счетов

Нужен список действующих клиентов с учредителями с исключением балансового счета 20004.
Код: sql
1.
2.
3.
4.
1ый запрос:
SELECT kl_kod, kl_nam, kl_kodstr, ml_kodv, ml_lc, ml_bs, ml_dateo FROM 
dbmaslc dbmaslc LEFT OUTER JOIN klient klient on dbmaslc.ml_kodkl=klient.kl_kod WHERE
kl_kod>1 AND kl_stat=1 AND ml_bs<>'20004' AND ml_datez is NULL


где,
kl_kod - кол клиента
kl_nam - наименование клиента
kl_kodstr - страна клиента
kl_stat - статус клиента

ml_kodv - код валюты
ml_lc - номер счета
ml_bs - номер балансового счета
ml_dateo - дата открытия счета
ml_datez - дата закрытия счета

Код: sql
1.
2.
3.
4.
5.
2ой запрос:
SELECT c.kl_kod, c.kl_nam, 
s.p_kl_kod, s.p_name, s.p_citizen FROM 
klient c JOIN spromoter s ON c.kl_kod = s.P_kl_kod WHERE 
kl_kod>1 AND p_status='Д' ORDER BY kl_kod


где,
p_kl_kod - код клиента из справочника KLIENT
p_name - наименование учредителя
p_citizen - гражданство учредителя
p_status - статус учредителя (Д - действующий)

Не могу связать запрос из 3х таблиц. Есть у кого-нибудь идеи? Необходимо вытащить список действующих клиентов с учредителями с исключением балансового счета 20004.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556532
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вроде всё просто должно быть в одном запросе.
Только непонятно как DBMASLC связан с первыми двумя таблицами?

LEFT JOIN тебе зачем? Не по всем клиентам занесены учредители?
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556535
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cорри, увидел.
Попробуй проще:
Код: sql
1.
2.
3.
4.
SELECT kl_kod, kl_nam, kl_kodstr, ml_kodv, ml_lc, ml_bs, ml_dateo 
FROM dbmaslc, spromoter, KLIENT
where dbmaslc.ml_kodkl=klient.kl_kod and spromoter.P_kl_kod=klient.kl_kod
kl_kod>1 AND kl_stat=1 AND ml_bs<>'20004' AND ml_datez is NULL
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556544
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183Не по всем клиентам занесены учредители? Да, не по всем клиентам занесены...
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556555
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И по клиентам без учредителей надо вывести пустые значения?
тогда действительно LEFT JOIN
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556569
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
SELECT k.[kl_kod], k.[kl_nam], k.[kl_kodstr], m.[ml_kodv], m.[ml_lc], m.[ml_bs], m.[ml_dateo],
s.[p_kl_kod], s.[p_name], s.[p_citizen] FROM DBMASLC m LEFT OUTER JOIN
KLIENT k ON k.[kl_KOD] = m.[ml_kodkl] 
JOIN (SELECT s.[p_kl_KOD], s.[p_name], s.[p_citizen] FROM SPROMOTER) AS s ON s.[p_kl_KOD] = k.[kl_KOD]
WHERE kl_kod>1 AND kl_stat=1 AND ml_bs<>'20004' AND p_status='Д' AND ml_datez is NULL ORDER BY kl_kod

Почему-то ругается на s.[p_kl_KOD] ?
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556625
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем ты делаешь промежуточную таблицу?
Не для всех клиентов есть счета?
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556631
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183Зачем ты делаешь промежуточную таблицу?
Не для всех клиентов есть счета?1. KLIENT - справочник клиентов
2. SPROMOTER - учредители клиентов
3. DBMASLC - массив счетов

У всех есть счета. Но не по всем клиентам занесены учредители.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556635
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так соедини KLIENT и SPROMOTER через LEFT JOIN, а DBMASLC через where
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556670
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183Ну так соедини KLIENT и SPROMOTER через LEFT JOIN, а DBMASLC через whereА можно примерчики?
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556680
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему в группе "FoxPro, Visual FoxPro"
Ты же пишешь "MS SQL 2008."
До T-SQL доберусь только послезавтра.
На ACCESS сойдет?
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556685
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183А почему в группе "FoxPro, Visual FoxPro"
Ты же пишешь "MS SQL 2008."
До T-SQL доберусь только послезавтра.
На ACCESS сойдет?Потому что приложение на Visual FoxPro, а база данных (БД) на MS SQL 2008. А БД состоит из многочисленных таблиц.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556696
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На ACCESS всё просто и твоим методом.
Может в фоксе что-то не так

Код: sql
1.
2.
3.
SELECT T1.*, T2.*, T3.*
FROM (T1 LEFT JOIN T2 ON T1.Код = T2.Код) INNER JOIN T3 ON T1.Код = T3.Код
WHERE (((T3.Счет)<>"1222"));
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556701
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или так:

Код: sql
1.
SELECT T1.* FROM (T1 LEFT JOIN T2 ON T1.Код = T2.Код) LEFT JOIN T3 ON T1.Код = T3.Код;
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556711
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мой способ на ACCESS не работает.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39556988
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ularsoftПотому что приложение на Visual FoxPro, а база данных (БД) на MS SQL 2008. А БД состоит из многочисленных таблиц.
Не имеет никакого значения.
Запрос работает на сервере. Фох всего лишь клиент.
Путаница вопросов ответов... окончательно запутала)))
Но если отталкиваться от 1го сообщения
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
--нужные поля, с алиасами
FROM 
dbmaslc d  inner JOIN klient k 
on d.ml_kodkl=k.kl_kod AND d.ml_bs<>'20004' AND d.ml_datez is NULL
left join
SPROMOTER s  
on k.kl_kod=s.kl_kod and s. p_status='Д' 
WHERE
k.kl_kod>1 AND k.kl_stat=1 



Левое, правое соединения, нельзя использовать в where. Оно превращает соединение в inner
Учите SQL)))

Писано прямо здесь, на колене. Внимательно проверьте на ошибки, названия полей.
Смысл думаю ясен.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39557251
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asdorЛевое, правое соединения, нельзя использовать в where. Оно превращает соединение в inner
Учите SQL)))
.
Да. Скорее всего так оно и есть.
"превращает" вряд ли, просто несовместимо по логике.
В справочниках ничего не нашел.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39557280
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT 
--нужные поля, с алиасами
FROM 
dbmaslc d  inner JOIN klient k 
on d.ml_kodkl=k.kl_kod AND d.ml_bs<>'20004' AND d.ml_datez is NULL
left join
SPROMOTER s  
on k.kl_kod=s.kl_kod and s. p_status='Д' 
WHERE
k.kl_kod>1 AND k.kl_stat=1 



Уважаемый Asdor, данный запрос вытаскивает все юридические лица с учредителями, а также закрытые счета клиентов юридических лиц.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39557329
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdor
Код: sql
1.
d.ml_datez is NULL


Почему-то не сработало условие d.ml_datez is NULL
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39557422
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ularsoftУважаемый Asdor, данный запрос вытаскивает все юридические лица с учредителями, а также закрытые счета клиентов юридических лиц.

Вот честно, вы ж на техническом форуме)))
Думаете кто видит, и понимает про "юридические лица с учредителями, а также закрытые счета"

Говорите о таблицах, полях и пр.
ularsoftПочему-то не сработало условие d.ml_datez is NULL


Это ответ на предыдущее сообщение?
Так приведите весь запрос. разве можно что то сказать по приведенному отрывку
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39557448
asdor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ularsoft,
Можно посоветовать для разбора собственных полетов следующее.
Напишите 3 запроса, с выбором нужных полей из каждой таблицы, и там же обязательно, поля оп которым идут связи.
Отфильтруйте все нужное (не нужное)) )
дальше просто соедините.
Ну можно и здесь спросить как соеденить.
Вам же яснее будет, что и почему.
...
Рейтинг: 0 / 0
Еще 1 выборка из 3х таблиц
    #39557585
ularsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asdorВам же яснее будет, что и почему.Отлично!
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Еще 1 выборка из 3х таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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