@skver91

Как связать несколько таблиц с одной таблицей?

Имеется таблица:

CREATE TABLE house (
          id INT UNSIGNED AUTO_INCREMENT,
          name_house VARCHAR(256),
          PRIMARY KEY(id))
          ENGINE InnoDB;


И две производные таблицы:

CREATE TABLE kitchen (
          id INT UNSIGNED AUTO_INCREMENT,
          name_kitchen VARCHAR(256),
		  id_house INT UNSIGNED,
          FOREIGN KEY (id_house) REFERENCES house(id) ON UPDATE CASCADE,
          PRIMARY KEY(id))
          ENGINE InnoDB;

   CREATE TABLE room (
          id INT UNSIGNED AUTO_INCREMENT,
          name_room VARCHAR(256),
          id_house INT UNSIGNED,
          FOREIGN KEY (id_house) REFERENCES house(id) ON UPDATE CASCADE,
          PRIMARY KEY(id))
          ENGINE InnoDB;


Вставляю данные в таблицы:

INSERT INTO house VALUES(NULL, 'dsfsd');
INSERT INTO house VALUES(NULL, 'dsfsd');
INSERT INTO house VALUES(NULL, 'dsfsd');
INSERT INTO house VALUES(NULL, 'dsfsd');

INSERT INTO kitchen VALUES(NULL, 'sdfsd',  LAST_INSERT_ID());
INSERT INTO room VALUES(NULL, 'wresdfsdsfdsd',  LAST_INSERT_ID());

И получается, что только таблица kitchen имеет связь с таблицей house.

Как связать вместе room и kitchen с house?
  • Вопрос задан
  • 2826 просмотров
Решения вопроса 2
@Arik
INSERT INTO house VALUES(NULL, 'dsfsd');

SET @house_id = LAST_INSERT_ID();

INSERT INTO kitchen VALUES(NULL, 'sdfsd', @house_id);

INSERT INTO room VALUES(NULL, 'wresdfsdsfdsd', @house_id);
Ответ написан
Комментировать
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
Рашифруйте свой поток сознания подробнее

upd
INSERT INTO kitchen VALUES(NULL, 'sdfsd',  LAST_INSERT_ID());
INSERT INTO room VALUES(NULL, 'wresdfsdsfdsd',  LAST_INSERT_ID());


LAST_INSERT_ID как бы намекает что это последнее созданное автоинкрементом айди.

Обычно это делается поочередно на языке проекта с запоминанием нужного ласт инсерта, а не одним большим запросом.

Но допустим вы просто заполняете базу, тогда поможет что-то вроде
SET @last_insert_id=LAST_INSERT_ID();
INSERT INTO kitchen VALUES(NULL, 'sdfsd',  @last_insert_id);
INSERT INTO room VALUES(NULL, 'wresdfsdsfdsd',  @last_insert_id);


upd2
Почему домов много, а кухня и комната одни? Бред какой-то получается
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
mzcoding
@mzcoding
Web-Разработка
создать 4ю таблицу с id всех 3 таблиц)
Ответ написан
falsebyte
@falsebyte
Зачем вы используете LAST_INSERT_ID() ?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы