Текущий архив: 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.47 MB
Время: 0.007 c