![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: нет Всего: 12 |
Формучане, всем доброго вечера.
Возник следующий вопрос. Я создаю две базы. В первой базе (M_Table) идут сл. поля:
есть вторая таблица (D_Table) в ней есть сл. поля:
Я решил связать две таблицы c отношением ОДИН-КО-МНОГИМ. Для этого создал индекс для второй таблицы по полю D_Code. После чего создал отношение. Вопрос, как использовать данное преимущество в своих программах. Если не сложно покажите SQL кодом, как с этим работать. ЗЫ. Код всех действий которые я проделал выше не показываю, т.к. его нет. Все делалось под Виндой через SQLyog. -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
Gwire |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
![]()
Где есть вторая таблица? В первой базе или уже во второй? Если во второй, то оригиральная у тебя задача. Хотя это можно организовать указав имена БДs, но лучше так не делать:
поле id в db1.table1 -> INT, PrimaryKey или Unique, а лучше РК+auto_increment. поле db1_table1_id в db2.table2 -> INT, и можно + Index самособой в поле db1.table1.id заносятся данные <"один">, а в db2.table2.db1_table1_id - <"многие"> ![]() |
||||
|
|||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: нет Всего: 12 |
Все в одной базе.... Не будем ничего усложнять..... ![]() -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: нет Всего: 12 |
????
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
![]() хороший вопрос..из той же оперы что и "я решил купить мерседес, в чем его преимущество?" ну если тебе не камаз нужен а мерседес - тогда все в порядке, его преимущество в том что можно спокойно поставить в гараж. если надо связать - значит так оно и надо, если не надо - преимуществ разумеется не будет. Тут надо исходить из требований задачи а не из того что просто взял и решил попробовать "ОДИН-КО-МНОГИМ". ![]() Это сообщение отредактировал(а) azesmcar - 15.5.2009, 08:43 |
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: нет Всего: 12 |
Ну мы все учимся, и нечего в том что я просто решил связать плохо нет. А вообще, так действительно нужно. Вот связал я эти две таблицы, но какой от этого толк не пойму. Язык SQL позволяет задать любое условие для поиска, но какой + именно в этом случае не знаю. Поэтому и прошу разъяснить. Может строка запроса на языку SQL будет меньше, ведь ссылаясь на строку в первой таблице, должно автоматически находится соответствующие значения во второй. Но вот как правильно написать это запрос не знаю. ![]() -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
azesmcar |
|
||||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
плохого действительно ничего нет, но надо учиться на правильных примерах, хотя если это учебная задача - то все в порядке ![]() пример н.1 (простое связывание этих таблиц)
пример н.2 (подсчет количества соответствующих значений в таблице table_D)
пример н.3 (вывод тех записей, которым в таблице table_D соответствует более 3х записей)
возможно где-то в примерах ошибочки допустил, здесь писал..но смысл этот |
||||||||
|
|||||||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: нет Всего: 12 |
Спасибо, сегодня попробую дома, просто БД и среда разработки не на работе. Спасибо. Будут вопросы, обязательно задам. -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
пример н.4 Если значения в table_D которые удовлетворяют условие D_Code=M_Code отсутствуют... А нужно отображать все записи из table_M:
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
||||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: нет Всего: 12 |
Сделаю свои умо заключения. Если не так поправьте. Связывание двух таблиц в одной базе в данном случае просто повышает скорость обработки запросов и все?
-------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
ну не то чтобы просто )) в принципе если зауматься то - да..без связки можно обойтись, все это вручную делать самому, если еще задуматься то и без базы данных можно обойтись...можно ведь все в файлах хранить. связка таблиц настолько облегчает труд программиста (я еще не говорю о повышении эффективности) что сложно представить как без нее обойтись. Представь ситуацию когда тебе нужно к примеру получить данные из 10-15 таблиц, и попробуй представить как обойтись без связки. |
|||
|
||||
Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 6 Всего: 211 |
вложенный селект - намного медленее, не могу придумать ситуации когда outer join стоило бы заменить на вложенный это не значит что так правильнее ![]() |
|||
|
||||
vikaz |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: нет Всего: 12 |
azesmcar, ты хочешь сказать, что код который находится выше, будет работать только если есть связь между таблицами? Просто я еще не проверил, только вечером. Но вопрос возник сейчас. -------------------- ![]() Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |