Запросить поле из внешней таблицы по ключу

Рейтинг: 0Ответов: 1Опубликовано: 07.12.2014

Доброго времени суток.

Есть, в базе, таблица жанров:

CREATE TABLE `genres` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` int(11) unsigned NOT NULL,
  `description` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `name_genres` (`name`),
  KEY `description_genres` (`description`),
  CONSTRAINT `genres_ibfk_1` FOREIGN KEY (`name`) REFERENCES `names` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `genres_ibfk_2` FOREIGN KEY (`description`) REFERENCES `text` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
);

Вместо названия и описания жанра в записи хранятся внешние ключи, ссылающиеся на таблицы names (хранит текстовые поля) и text (хранит многострочные тексты). Есть ли способ, используя механизм внешних ключей InnoDB, получить, одним sql запросом, данные по всем или части жанров?

Пока использовал такой код:

SELECT `names`.`name`  FROM `names`, `genres` WHERE `names`.`id` = `genres`.`name`

Он работает но, подозреваю, далеко не оптимален, для данной ситуации.

Маленькая ремарка для тех, кто задастся вопросом "Нахрена две базы?": Интерфейсы некоторых сайтов надо переводить)

Ответы

Ответов пока нет.