|
|
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
вопрос может показаться немножко странным. но тем не менее. рассмотрим случай: есть две таблицы: County с полями team, country, team_photo Manager с полями team, manager, sponsors поля team в обоих таблицах уникальны (их значения не повторяются) создано два индекса по полю team в каждой таблице (в одной Primary, в другой regular). с помощью двух индексов соединены две таблицы (если посмотреть схему БД,то там появится линия связи :О) ) нужно написать запрос для двух таблиц. вопрос заключается в следующем: можно ли писать запрос типа: select country.country, manager.manager; from teams!country, teams!manager; where team = "Cofidis" чтобы получить одну запись я рассуждал так: если я в БД установил связь между таблицами, то фразу типа FROM teams!country INNER JOIN teams!manager ; ON Country.team = Manager.team; писать не надо (ведь не зря же я устанавливал связь) если можно, то какие свойства и где их нужно прописать для связи, чтобы оно работало? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 19:22 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
По неизвестной причине сейчас недоступен сайт фоксклуба, поэтому почитай вложенный файл. Хотя Владимир Токарев крайне отрицательно относиться к тому, что в этом файле написано. Правда, он не уточнил, что именно ему не нравиться - терминология или изложенные соображения. Попробую попозже у него уточнить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 20:28 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
спасибо за предоставленную информацию, она полезна, но чуток не по моей проблеме. может я непрвильно задал вопрос - попробую сформулировать его по другому: можно ли каким-нибудь образом настроить связи в БД так, чтобы при написании запросов к таблицами вручную не прописывать JOIN (препод утверждает, что можно, и за незнание этого поимел одногруппницу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 21:56 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
Насколько я понял, твой препод хочет что бы ты изучил команды фокса по явной устновке реляционных связей. Это тебе в хелп. Тут, кстати, много постов на эту тему. P.S: Контрольноая фраза SET RELATION TO Что касаеться INNER JOIN , то тут главное чтобы ты сам "в голове знал" какие логические связи между таблицами по ключевым полям и кто на кого ссылаеться и к SET RELATION TO отношения не имеет. Уж если не в тему то тогда ,сэр, учитесь донести вопрос на который хотите получить ответ, а не так что " пишу то, что только мне понятно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 22:40 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
nonentityможно ли каким-нибудь образом настроить связи в БД так, чтобы при написании запросов к таблицами вручную не прописывать JOIN Нет. Нельзя. Или ты опять спрашиваешь не так или не о том. nonentityпрепод утверждает, что можно Пусть сообщит как? Мне тоже интересно. "Автоматически" связь настраивается только в автоматически же построенных запросах (дизайнер Query или Local View). Да и то, далеко не всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 23:14 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
Вообще говоря, все, что может быть сделано с помощью INNER JOIN, может быть сделано также и в WHERE. Но к настройке связей в БД этот факт не имеет никакого касательства. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2005, 23:52 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
так, вопрос для себя я решил и без препода ) напомню, что две таблицы связаны по принципу "один-к-одному" по полю team в конструкторе базы данных одно и тоже можно получить следующим образом 1. select country.country, manager.manager; from teams!country inner join teams!manager; on country.team=manager.team; where country.team = "Cofidis" но так препод "не разрешает" :О) 2. select country.country, manager.manager; from teams!country, teams!manager; where country.team = "Cofidis" and manager.team = "Cofidis" тоже кривоватый способ, так как по нему не видно всех "плюсов" установленной связи 3. select country.country, manager.manager; from teams!country, teams!manager; where country.team = "Cofidis" and manager.team = country.team а вот это по-ходу, то, чего так отчаянно пытался препод получить от девочки :О) всем спасибо, вопросов больше нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2005, 00:49 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
1. Все варианты будут прекрасно работать без "нарисованных" связей, и даже без индексов. 2. Если уж не указывать cовсем, то так тоже будет работать: Код: plaintext 1. 2. 3. 4. 3. Передай преподу, что он ошибся в выборе сферы деятельности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2005, 01:05 |
|
||
|
для чего нужны связи между таблицами
|
|||
|---|---|---|---|
|
#18+
Hi nonentity! Варианты 1 и 3 равнозначны, причём вариант 1 более логичен с точки зрения стандарта языка SQL - мы там явно отделяем условия связи от прочих условий отбора. Кроме того вариант 1 путём небольшой замены (INNER а LEFT или RIGHT) позволяет получить результаты для случай "неполных" связей - например в одной таблице есть запись с team="что-то" а в другой - нету. Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2005, 16:51 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33089138&tid=1594148]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
170ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 485ms |

| 0 / 0 |
