Сложный запрос на добавление строки - MySQL

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

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

Доброго времени суток) Есть таблица, которая содержит в себе имена других таблиц и их русскоязычное описание. Так же есть таблица со странами, регионами с которых нужно брать идентификатор по названию. 1) можно ли создать запрос на добавление что то вроде такого
Листинг программы
  1. INSERT INTO IN (SELECT name FROM serviceData WHERE discription = 'описание') VALUES ('значение','значение','значение','значение');
2) устанавливать значения полей при помощи вложенных запровов
Листинг программы
  1. INSERT INTO IN (SELECT name FROM serviceData WHERE discription = 'описание') VALUES ('значение','значение',IN (SELECT id FROM country WHERE name = 'значение'),'значение');
3) корректна ли такая запись вообще 4) как правильно реализовать такую возможность.

Решение задачи: «Сложный запрос на добавление строки»

textual
Листинг программы
  1. mysql> select * from test;
  2. +--------+
  3. | field  |
  4. +--------+
  5. | field1 |
  6. | field2 |
  7. | field3 |
  8. +--------+
  9. 3 rows in set (0.00 sec)
  10.  
  11. mysql> select group_concat( `field` ) from test;
  12. +-------------------------+
  13. | group_concat( `field` ) |
  14. +-------------------------+
  15. | field1,field2,field3    |
  16. +-------------------------+
  17.  
  18. select concat( 'insert into `Table`(' , group_concat( `field` ) , ')' ) from test;
  19. +------------------------------------------------------------------+
  20. | concat( 'insert into `Table`(' , group_concat( `field` ) , ')' ) |
  21. +------------------------------------------------------------------+
  22. | insert into `Table`(field1,field2,field3)                        |
  23. +------------------------------------------------------------------+

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

  1. mysql> — командная строка для взаимодействия с базой данных
  2. select * from test; — запрос на выборку всех данных из таблицы test
  3. +--------+ — формат вывода результатов запроса (каждая строка выводится на новой строке, первый столбец выводится по центру, столбцы разделены символом + и т.д.)
  4. field — название поля таблицы test
  5. group_concat(field) — функция агрегирования, объединяющая значения поля в одну строку, разделенные запятыми
  6. select concat( 'insert intoTable(' , group_concat(field) , ')' ) from test; — запрос на выборку строки, объединяющей названия полей и их значения в одну строку для вставки в таблицу Table
  7. +------------------------------------------------------------------+ — формат вывода результатов запроса (каждая строка выводится на новой строке, первый столбец выводится по центру, столбцы разделены символом + и т.д.)
  8. insert intoTable(field1,field2,field3) — SQL-команда на вставку строки в таблицуTable` с указанием названий полей и их значений в скобках

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


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

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

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

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

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

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