Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как выташить значени поля из другой таблицы соеденив его... [D5, easy table 6.03]


Страницы:   1 2 3

eger' ©   (2005-02-02 10:43:00) 

Уважаемые! Как выташить поле из другой таблицы соеденив его с результатом запроса. Пример: есть табли поставщиков и заказов им. Естественно в обоих есть поля связи. В результате хочется иметь ответ в виде - имя поставщика, № заказа, дата, сумма. Типа того. Как не пробовал всякие join ничего не получается. Подскажите ради бога.


P.N.P.   (2005-02-03 14:22:00) [21]

> Easy Table 6.03
Надо же, я и не знал про него раньше,
занятная вещица..


eger'   (2005-02-03 13:35:00) [22]

2 P.N.P. ©  :
>PK = Primary key = первичный ключ
>FK = Foreign key = внешний ключ
Ааа..

>К стати, до сих пор не упямянулась СУБД.
Як жеж не упоминалась - Easy Table 6.03


P.N.P.   (2005-02-03 13:29:00) [23]

>что есть ПК и ФК?
PK = Primary key = первичный ключ
FK = Foreign key = внешний ключ

К стати, до сих пор не упямянулась СУБД.


eger'   (2005-02-03 13:20:00) [24]

2 Соловьев ©  :
что есть ПК и ФК?


eger'   (2005-02-03 13:17:00) [25]

2 Соловьев ©  :
юзверям не позволено их создавать. список просто "заколочен", такая специфика. только заказы создаются.


Sergey13   (2005-02-03 13:16:00) [26]

2[21] Соловьев ©   (03.02.05 13:13)
ИМХО ты желаемое выдаешь за действительное. Особенно по части ФК. 8-)


Sergey13   (2005-02-03 13:15:00) [27]

2[20] eger'   (03.02.05 13:11)
Обычно индексируют то с чем соединяюти то по чему сортируют.


Соловьев   (2005-02-03 13:13:00) [28]


> попробую поиграться с ними. я так понимаю лучше проиндексировать
> и там и там SupplierNo?

если будет внешний ключ, то не надо ничего индексировать. так как ПК и ФК уже имеют системные индексы.


eger'   (2005-02-03 13:11:00) [29]

2 Sergey13 ©  :
попробую поиграться с ними. я так понимаю лучше проиндексировать и там и там SupplierNo?


Соловьев   (2005-02-03 13:10:00) [30]


> абсолютно (не более нескольких десятков).

та хоть один. Представь себе что, сидит юзверь и создает Поставщика. потом удаляет и т.д. Ну и в конце концов, переваливат за 32767 и ты уже не сможешь в деталь-таблицу поставить связку.


> про внешние ключи не знаю....

читай и сделай, убережешь свою БД от нецелостности.


eger'   (2005-02-03 13:09:00) [31]

2 Соловьев ©  :
Я понял про что Вы. Нет, на самом деле список поставщиков практически не меняется, так что в ближайшие сто лет SupplierNo (autoinc)вряд ли дойдет до 1000.
Кстати что-то стало работать после того, как я в обоих таблицах сделал типы SupplierNo = Integer...


Sergey13   (2005-02-03 13:08:00) [32]

При таких запросах еще индексы здорово рулят обычно.


eger'   (2005-02-03 13:03:00) [33]

2 Соловьев ©:
абсолютно (не более нескольких десятков). про внешние ключи не знаю....

2 Sergey13 ©:
Дак есть чем ограничить. буквально до 50-500 результатов. все равно она не несет этого, как только еще и наименование нужно брать из Supliers. А так выборку делает мигом. Можно вложенный сделать? Или просто легче на все это плюнуть, заменить DBGrid на просто Grid и заполнять его ручками, взяв резутьлат отбора, присабачивая к нему наименование... как думаете?


Соловьев   (2005-02-03 12:52:00) [34]


> Поставщиков не будет более нескольких десятков никогда!

ну-ну.. а то что SupplierNo (autoinc) больше 32 767 не станет. ты даешь 100% или ты не знаешь про внешние ключи?


Sergey13   (2005-02-03 12:47:00) [35]

Если заказов сотни тысяч, то тормозить будет любой сервер, не то что "легкие таблицы". Может просто выборку ограничить нужным?


eger'   (2005-02-03 12:43:00) [36]

2 all:
на самом деле, сработали ваши советы. да и то, что делал я, тоже наверое сработало бы. просто изя тормозит на запросах такого вида просто жуть, посему я считал, что она висит и скидывал sqlconsole. это просто ужас как долго.
а нельзя сделать вложенный запрос - сперва отобрать нужные записи из Orders, а затем к ним прицепить наименования из Suppliers? Как?


Sergey13   (2005-02-03 09:21:00) [37]

2[8] P.N.P. ©   (02.02.05 11:05)
>а вдруг нужны =)
>будем ждать автора.

[10] eger'   (02.02.05 21:26)
>мне нужно вытащить наименование поставщика с каждой записью заказа.

Я был прав. Не нужен джоин. 8-)


Anatoly Podgoretsky   (2005-02-02 23:26:00) [38]

on S.SupplierNo=O.SupplierNo


eger'   (2005-02-02 21:26:00) [39]

Во первых, спасибо всем за ответы! Жаль что не мог ранее написать. Много работы.

2 all
я первый раз столкнулся с join так что пробовал всяко. Как посоветовали как раз не делал. Я попробую и скажу что у меня получилось.

2 Соловьев ©  
Почему > SupplierNo (SmallInt), - потенциальная ошибка? Поставщиков не будет более нескольких десятков никогда!

2 msguns ©
Вы все правильно поняли. На всякий случай изложу подробнее: мне нужно вытащить наименование поставщика с каждой записью заказа. вот и все. возможно еще отбор заказов по сумме (от и до некой суммы). т.е. первичным отбором явл. таблица заказов, а поле "наименование поставщ." должно идти в каждой выводимой строке заказа(отбор от и до некой суммы по всем заказам).


msguns   (2005-02-02 11:11:00) [40]

Если судить по сабжу внимательно, то вот это:

"Уважаемые! Как выташить поле из другой таблицы соеденив его с результатом запроса"

дает основание предположить, что ему надо вытащить попутную информацию из других таблиц по полям, полученным именно в запросе. Т.е. речь должна итти либо о ХП (их есть в изи ?), либо о вложенном запросе (их могут быть в изи ?)

Хотя манера автора выражения своих мыслей такова, что можно делать совершенно разные предположения, в т.ч. взаимоисключающие


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо