Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.29;
Скачать: CL | DM;

Вниз

Запрос   Найти похожие ветки 

 
Анна   (2003-05-06 19:51) [0]

Добрый вечер мастера.
Добавляю в IBQuery запрос:
select FULL_NAME, STATE, TOWN, ADRESS, NAME_CURATOR, NAME_BANK, NAME_BRANCH
from CURATOR Right join (Bank right join (Branch right join Firm on Branch.code_branch=Firm.code_branch) on Bank.code_bank=Firm.code_firm) on Curator.code_curator=Firm.code_firm
Всё работает, но в Гриде поля с названиями из таблиц Банк, куратор и отрасль не показываются.
Что не так? И вообще может это лучше не в Query делать?


 
Sergey Masloff   (2003-05-06 21:23) [1]

Для однозначности неплохо бы "квалифицировать" названия полей. Типа:
select Cr.FULL_NAME, Cr.STATE, Cr.TOWN, Cr.ADRESS, Cr.NAME_CURATOR, Bn.NAME_BANK, Br.NAME_BRANCH
from CURATOR CR Right join (Bank Bn right join (Branch Br right join Firm Fr on Br.code_branch=Fr.code_branch) on Bn.code_bank=Fr.code_firm) on Cr.code_curator=Fr.code_firm

Естественно префиксы я расставил от балды так как не знаю что откуда. Но общая идея, я думаю, понятна. И в грид все должно нормально отображаться, и Query тут к месту


 
Анна   (2003-05-06 23:31) [2]

Сил нет!!! Не работает!
Показывает только Всё из Firm и соответствующее из Branch. Остальное null. В IBExpertе тоже самое.
Делать то чего?


 
Johnmen ©   (2003-05-06 23:59) [3]

Чего-чего...Вдумчиво разобраться в логике работы соединений...
Внимательно почитать SQL Reference Guide.


 
Анна   (2003-05-07 00:02) [4]

2Johnmen ©
Издиваися? Вечер итак убит на эту запросину!


 
Rol   (2003-05-07 06:17) [5]

2Анна
А что, структура твоих таблиц понятна из приведённого запроса?
Хочешь получить ответ, научись задавать вопрос. Видимо, телепаты пока что не занялись вплотную программированием.


 
ЮЮ ©   (2003-05-07 06:24) [6]

Так твой запрос и предназначен для того, чтобы вывести все фирмы, независимо есть они в таблице CURATOR или нет. Для фирм, которых нет в таблице CURATOR там и будут все NULL-ы


 
Анна   (2003-05-07 13:38) [7]

Прошу прощения.
Т-ца Firm: code_firm(primary) Full_name, town, adress, state, code_bank, code_branch, code_curator (внешние ключи).
Bank: code_banl(primary), name_bank
Branch: code_branch(primary), name_branch
Curator: code_curator(primary), name_curator.
В запросе должна выводиться инф-я о Firm + названия банка, отрасли и куратора.
Выводится только всё из Firm+ соответствующее из Branch.
Такой же запрос в Access работает, а в IB нет
Help...


 
Sheriff   (2003-05-07 13:49) [8]

рискните... ;)

select f.FULL_NAME, f.STATE, f.TOWN, f.ADRESS, c.NAME_CURATOR, b.NAME_BANK, r.NAME_BRANCH
from Firm f, Bank b, Branch r, Curator c
where r.code_branch=f.code_branch and b.code_bank=f.code_bank and c.code_curator=f.code_curator


 
Анна   (2003-05-07 15:06) [9]

Так рисковала в самом начале. Не оправдалось. В Firm поля code_... кроме первичного могут быть null. А так выводятся только все фирмы с заполненными и code_bank и code_branch и code_curator. Надо чтобы из Firm все выводились.


 
Zacho ©   (2003-05-07 15:12) [10]

Сейчас нет времени детально разбираться с твои запросом, но небольшой совет - почему бы не переписать его в виде:
SELECT ... FROM ...
RIGHT JOIN ... ON ..
RIGHT JOIN .. ON ..
RIGHT JOIN .. ON ..
...
без всяких "вложенных" JOIN"ов


 
Dona ©   (2003-05-07 15:26) [11]

Может, попробовать как предлагал Sheriff, но c LEFT JOIN

select f.FULL_NAME, f.STATE, f.TOWN, f.ADRESS, c.NAME_CURATOR, b.NAME_BANK, r.NAME_BRANCH
from Firm f LEFT JOIN Bank b .......


 
Sheriff   (2003-05-07 16:10) [12]

> Т-ца Firm: code_firm(primary) Full_name, town, adress, state, code_bank, code_branch, code_curator (внешние ключи).

> В Firm поля code_... кроме первичного могут быть null
у вас есть записи с неопределенными значениями внешних ключей?


 
Анна   (2003-05-07 18:10) [13]

Ещё раз прошу прощения, но вопрос открыт.
Шляпа, товарищи, с этими объединениями. По сути правильно с right. Но не работает же! А в Access почему тогда работает? Все joins уже перепробованы.
Ещё идеи есть?
>2Sheriff
А что, так нельзя?


 
Zacho ©   (2003-05-07 18:28) [14]


> Анна (07.05.03 18:10)

Приведи краткую структуру своих таблиц (только поля входящие в PK и FK), краткое описание связей и какой результат запроса тебе нужен. Тогда попробуем помочь, а без этой информации гадание на кофейной гуще получается.
P.S.:

> По сути правильно с right

Любой запрос с соединениями только одного типа (LEFT или RIGHT) можно переделать в запрос с соединениями противоположной направленности. Лично мне удобнее работать с LEFT JOIN - как-то проще глядя на запрос представлять структуру связей.


 
Анна   (2003-05-07 23:10) [15]

В споре родилась истина!
Всем Спасибо!



Страницы: 1 вся ветка

Текущий архив: 2003.05.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
1-94948
titnn
2003-05-17 18:08
2003.05.29
как писатьMPG2 файл но чтоб его можно было и проигрывать ?


3-94698
yurikon
2003-05-07 17:57
2003.05.29
SELECT - 1,2,3,4,...


14-95003
MDFE
2003-05-10 14:06
2003.05.29
Редактор дайджестов форума


1-94857
Identifikator Borna
2003-05-20 10:11
2003.05.29
Поиск в текстовых файлах


3-94664
vvvvv
2003-05-12 14:31
2003.05.29
Как через ADO подключится к запароленной базе Access?