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

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

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

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

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

textual
Листинг программы
mysql> select * from test;
+--------+
| field  |
+--------+
| field1 |
| field2 |
| field3 |
+--------+
3 rows in set (0.00 sec)
 
mysql> select group_concat( `field` ) from test;
+-------------------------+
| group_concat( `field` ) |
+-------------------------+
| field1,field2,field3    |
+-------------------------+
 
select concat( 'insert into `Table`(' , group_concat( `field` ) , ')' ) from test;
+------------------------------------------------------------------+
| concat( 'insert into `Table`(' , group_concat( `field` ) , ')' ) |
+------------------------------------------------------------------+
| insert into `Table`(field1,field2,field3)                        |
+------------------------------------------------------------------+

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

  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