Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.05.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
Анна   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.007 c
7-95139
demonyator
2003-03-28 18:32
2003.05.29
Как программно запретить запуск определённых файлов?


9-94651
Gayrus
2002-12-17 16:18
2003.05.29
OpenGL текстуры


14-95079
FloreX
2003-05-10 09:53
2003.05.29
Народ, тусовка и халява ...


7-95133
JohnKorsh
2003-03-31 12:02
2003.05.29
Работа с последовательными портами.


1-94822
Novichok_
2003-05-19 13:23
2003.05.29
Как мне передать значение переменной из одной формы в др.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский