1

Тема: Использование связных таблиц

Доброго времени суток всем! Есть несколько вопросов, помогите, пожалуйста, разобраться.
Есть две таблицы: таблица1(id1, code1, some_object1, service1, …)  и таблица2(id2, code2, some_object2,).  Они связаны так, как сказано в FAQ 6.6.
Во-первых, обязательно ли создавать в этих таблицах поля с одинаковыми названиями (те поля, которые будут связаны)?
Во-вторых, при выборе для отображения в таблице2 поля some_object2 в таблице1 отображается id2, но не само значение поля. Как показать some_object2 ?
В-третьих, в таблице1 в двух полях должны отображаться данные из разных столбцов таблицы2 (в code1 из code2, в some_object1 из  some_object2). Выбрать разные Поля  для отображения в таблице2 не получается (только одно из имеющихся), и в таблице1 для вставки значений полей появляются два одинаковых списка из таблицы2 (или code1, или some_object1). Как в таблице1 использовать для подстановки значений разные столбцы таблицы2? К этому еще нужно, чтобы в таблице1 при выборе значения одного поля (из code2) во второе автоматически подставлялось соответствующее ему значение из другого поля таблицы2 (some_object2), т.к. эти поля в таблице2 строго соответствуют друг другу.

2

Re: Использование связных таблиц

Во-первых, обязательно ли создавать в этих таблицах поля с одинаковыми названиями (те поля, которые будут связаны)?

Нет. Вы выбираете связь из выпадающего списка. Имена столбцов могут быть разными. Обязателен одинаковый тип данных.

Во-вторых, при выборе для отображения в таблице2 поля some_object2 в таблице1 отображается id2, но не само значение поля. Как показать some_object2 ?

Свяжите some_object1 первой таблицы и some_object2 второй, затем выберите соответствующее отображение.

В-третьих, в таблице1 в двух полях должны отображаться данные из разных столбцов таблицы2 (в code1 из code2, в some_object1 из  some_object2).

Возможна связь только один к одному.

К этому еще нужно, чтобы в таблице1 при выборе значения одного поля (из code2) во второе автоматически подставлялось соответствующее ему значение из другого поля таблицы2 (some_object2), т.к. эти поля в таблице2 строго соответствуют друг другу.

Join в запросе.

3

Re: Использование связных таблиц

Спасибо за помощь, но в одном вопросе провал: отображаются id-ы!?
Делаю таблички по FAQ 6.6 с одним отличием - нет "TYPE=MyISAM" в конце SQL при создании таблицы? Как задать этот TYPE?
И еще, если в таблице1, где должен отображаться some_object2 (например, char(30)), указывается связь по id-у (например, smallint), как он отобразится: текст в числовом поле? Объясните, пожалуста, эту логику.

4

Re: Использование связных таблиц

Спасибо за помощь, но в одном вопросе провал: отображаются id-ы!?

При наводе курсора должно появляться значение в виде всплывающей подсказки.

Делаю таблички по FAQ 6.6 с одним отличием - нет "TYPE=MyISAM" в конце SQL при создании таблицы? Как задать этот TYPE?

При создании таблицы выполнить соответствующий запрос. Или перекодировать с помощью: ALTER TABLE table ENGINE = MYISAM;
MYISAM - тип по умолчанию, указывать не обязательно. Можно использовать InnoDB, у данного типа есть множество дополнительных возможностей, в частности использование внешних ключей при связи таблиц. Конечно, если у вас есть возможность использовать InnoDB!

И еще, если в таблице1, где должен отображаться some_object2 (например, char(30)), указывается связь по id-у (например, smallint), как он отобразится: текст в числовом поле?

Кажется вы не правильно поняли смысл связанных таблиц. Ничто в полях из других таблиц напрямую не отображается, за исключением внешних ключей. Смысл такой: вы связываете таблицы, задавая логику данным, затем выбираете вкладку "Query" (запрос по шаблону) и выставляете необходимые поля для выборки, после чего генерируется текст запроса, который можно использовать. В получаемых запросом данных вы и видете объединённую таблицу.

Мне почему-то кажется, что вы не поняли до конца статьи FAQ 6.6.
Для усвоения теории БД могу посоветовать почитать данный журнал "Xakep Спец/Базы Данных" Там же его можно скачать в .pdf. Но для более глубоких знаний, купите книгу по MySQL.

5

Re: Использование связных таблиц

Спасибо!