Вывод данных из связанных таблиц - MySQL

Узнай цену своей работы

Формулировка задачи:

Добрый день! Помогите разобраться с одной проблемой. Есть 3 таблицы, связанные между собой:
Листинг программы
  1. CREATE TABLE table1(
  2. ID INT(11) NOT NULL AUTO_INCREMENT,
  3. Name_table1 varchar(60),
  4. PRIMARY KEY (ID)) ENGINE = InnoDB;
  5. CREATE TABLE table2(
  6. ID INT(11) NOT NULL AUTO_INCREMENT,
  7. Name_table2 varchar(60),
  8. ID_table1 INT(11) NOT NULL,
  9. PRIMARY KEY (ID),
  10. FOREIGN KEY (ID_table1) REFERENCES table1(ID)
  11. ON UPDATE CASCADE
  12. ON DELETE CASCADE) ENGINE = InnoDB;
  13.  
  14. CREATE TABLE table3(
  15. ID INT(11) NOT NULL AUTO_INCREMENT,
  16. Name_table3 varchar(60),
  17. ID_table1 INT(11) NOT NULL,
  18. PRIMARY KEY (ID),
  19. FOREIGN KEY (ID_table1) REFERENCES table1(ID)
  20. ON UPDATE CASCADE
  21. ON DELETE CASCADE) ENGINE = InnoDB;
Во всех таблицах записаны данные. Table1 ID|Name_table1 1 |one 2 |two 3 |three Table2 ID|Name_table2|ID_table1 1 |new |1 2 |old |1 3 |modern |2 Table3 ID|Name_table3|ID_table2 1 |people |2 2 |dogs |2 3 |cat |3 Я пытаюсь получить данные следующим запросом:
Листинг программы
  1. Select Name_table1, Name_table2, Name_table3
  2. FROM table1, table2, table3
  3. WHERE table1.ID = 1
В итоге он мне выводит слишком много полей: Name_table1| Name_table2|Name_table3 one |new |people one |old |people one |modern |people one |new |dogs one |old |dogs one |modern |dogs one |new |cat one |old |cat one |modern |cat А хотелось бы увидеть следующий результат: Name_table1| Name_table2|Name_table3 one |new |people one |old |people И еще вопрос. Как вывести значения при следующем запросе:
Листинг программы
  1. Select Name_table1, Name_table2, Name_table3
  2. FROM table1, table2, table3
  3. WHERE table1.ID=table2.ID_table1 and table1.ID = table3.ID_table1 and table1.ID = 3;
Т.к. в таблице table2 ID_table1 = 3 не существует, то вся выборка вышла пустой. А как сделать так, чтобы выводило поля, в которых table1.ID = 3, без учета пустых столбцов? Хочу увидеть следующий результат: Name_table1| Name_table2|Name_table3 three | |cat

Решение задачи: «Вывод данных из связанных таблиц»

textual
Листинг программы
  1.  where table1.ID=table2.ID_table1 and table1.ID=table3.ID_table1 and table1.ID=3

Объяснение кода листинга программы

В представленном фрагменте кода происходит выборка данных из трёх связанных таблиц: table1, table2 и table3. Условие выбора данных задаётся с помощью оператора WHERE. В нём указано, что нужно выбирать только те строки, в которых значение идентификатора (ID) в таблице table1 совпадает со значением идентификатора (ID) в таблице table2 и таблице table3. Кроме того, в конце условия указано, что нужно выбирать только те строки, в которых значение идентификатора (ID) в таблице table1 равно 3. В итоге, выборка осуществляется по следующим условиям:

  1. table1.ID = table2.ID_table1
  2. table1.ID = table3.ID_table1
  3. table1.ID = 3 Выполнение этого запроса вернёт все строки из таблицы table1, которые соответствуют указанным условиям, а также соответствующие им строки из таблиц table2 и table3.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут