Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Использовать значение одного поля как название другого.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
igosja
Отправлено: 07 Января, 2017 - 21:29:59
Post Id



Гость


Покинул форум
Сообщений всего: 77
Дата рег-ции: Март 2013  
Откуда: https://vhol.org


Помог: 3 раз(а)




На сайте есть 3 таблицы (в сокращенном виде):
CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `team`
  2. (
  3.   `team_id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  4.   `team_base_id` TINYINT(2) DEFAULT 2,
  5.   `team_basemedical_id` TINYINT(2) DEFAULT 1,
  6.   `team_basephisical_id` TINYINT(2) DEFAULT 1,
  7.   `team_baseschool_id` TINYINT(2) DEFAULT 1,
  8.   `team_basescout_id` TINYINT(2) DEFAULT 1,
  9.   `team_basetraining_id` TINYINT(2) DEFAULT 1
  10.  );

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `buildingbase`
  2. (
  3.   `buildingbase_id` INT(11) PRIMARY KEY AUTO_INCREMENT,
  4.   `buildingbase_building_id` TINYINT(1) DEFAULT 0,
  5.   `buildingbase_team_id` SMALLINT(5) DEFAULT 0
  6. );

CODE (SQL):
скопировать код в буфер обмена
  1. CREATE TABLE `building`
  2. (
  3.   `building_id` TINYINT(1) PRIMARY KEY AUTO_INCREMENT,
  4.   `building_name` VARCHAR(255) NOT NULL
  5. );
  6. INSERT INTO `building` (`building_name`)
  7. VALUES ('base'),
  8.        ('basemedical'),
  9.        ('basephisical'),
  10.        ('baseschool'),
  11.        ('basescout'),
  12.        ('basetraining');

Вопрос: можно ли как-то в одном запросе склеить `building_name` из третьей таблицы с префиксом team и окончанием id и скормить это системе как название поля? Примерно как-то так:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `team`
  2. LEFT JOIN `buildingbase`
  3. ON `team_id`=`buildingbase_team_id`
  4. LEFT JOIN `building`
  5. ON `buildingbase_building_id`=`building_id`
  6. SET `team_+building_name+_id`=`team_+building_name+_id`+'1'

Подскажите, пожалуйста, как правильно записать вот эту конструкцию - `team_+building_name+_id`?
Сейчас это делается 6 отдельными запросами (по количеству записей в таблице building). Хотелось бы это все сделать одним запросом.

(Отредактировано автором: 07 Января, 2017 - 21:31:56)

 
 Top
Sail
Отправлено: 09 Января, 2017 - 09:58:28
Post Id



Участник


Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014  


Помог: 57 раз(а)




igosja, есть вариант с хранимой процедурой.
Например: Passing FieldName as Parameter in MySQL Stored Procedure
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB