![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как выташить значени поля из другой таблицы соеденив его... [D5, easy table 6.03]
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]Если судить по сабжу внимательно, то вот это:
"Уважаемые! Как выташить поле из другой таблицы соеденив его с результатом запроса"
дает основание предположить, что ему надо вытащить попутную информацию из других таблиц по полям, полученным именно в запросе. Т.е. речь должна итти либо о ХП (их есть в изи ?), либо о вложенном запросе (их могут быть в изи ?)
Хотя манера автора выражения своих мыслей такова, что можно делать совершенно разные предположения, в т.ч. взаимоисключающие