Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Связывание значения столбца с именем таблицы

Ответить
Настройки темы
MySQL - [решено] Связывание значения столбца с именем таблицы

Аватара для Rikka

Новый участник


Сообщения: 30
Благодарности: 1


Конфигурация

Профиль | Отправить PM | Цитировать


Здравствуйте!
Нужна помощь как связать в запросе значение столбца с таблицей. В таблице items_id_tiket в столбце меняется значение Itemstype, и это значение указывает на таблицу с соответствующими значениями.
Помогите с запросом.

select x.name, x.serail
From items_id_tiket t, (Monitors, Printers) x
Where t.Items_id = x.id
and t.id = 1

---
Таблица items_id_tiket
id Itemstype Items_id
1 Monitor 70

Таблица Monitors
id Name Serial
70 Acer 2001

Таблица Printers
id Name Serial
70 HP 203

Отправлено: 06:00, 24-10-2016

 

Аватара для shisik

Ветеран


Сообщения: 3246
Благодарности: 595

Профиль | Отправить PM | Цитировать


Не буду утверждать на 100%, но по-моему это вообще невозможно в рамках одного запроса.

Вообще у вас какая-то странная организация БД. Зачем отдельные таблицы для мониторов и принтеров, если их структура одинакова? Пусть будет одна таблица для всех товаров с дополнительным полем item_type. ID у всех товаров будут уникальны, а если нужно будет выбрать только мониторы, добавите в запрос условие item_type='Monitor'.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:32, 24-10-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Rikka

Новый участник


Сообщения: 30
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата shisik:
Не буду утверждать на 100%, но по-моему это вообще невозможно в рамках одного запроса.

Вообще у вас какая-то странная организация БД. Зачем отдельные таблицы для мониторов и принтеров, если их структура одинакова? Пусть будет одна таблица для всех товаров с дополнительным полем item_type. ID у всех товаров будут уникальны, а если нужно будет выбрать только мониторы, добавите в запрос условие item_type='Monitor'.
Допиливаем систему GLPI - и структура уже как есть.
Согласна на использование подзапросов)))

Отправлено: 19:07, 24-10-2016 | #3

y-- y-- вне форума

Старожил


Сообщения: 231
Благодарности: 62

Профиль | Отправить PM | Цитировать


Rikka,
UNION ALL для выборок с одинаковой структурой...

-------
Ты это - заходи если что...

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:59, 24-10-2016 | #4


Аватара для shisik

Ветеран


Сообщения: 3246
Благодарности: 595

Профиль | Отправить PM | Цитировать


Цитата Rikka:
Согласна на использование подзапросов))) »
Тогда всё предельно просто. Первый запрос выбирает нужную запись из items_id_tiket и оттуда берётся значение Itemstype, которое и подставляется во второй запрос. Правда, я смотрю, у вас не совпадают значения Itemstype с именами таблиц. Значения Itemstype в единственном числе (Monitor), а таблица называется Monitors. Добавить эту s не проблема, но это же частный случай и вообще жуткий костыль.
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:16, 25-10-2016 | #5


Аватара для Rikka

Новый участник


Сообщения: 30
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата shisik:
Тогда всё предельно просто. Первый запрос выбирает нужную запись из items_id_tiket и оттуда берётся значение Itemstype, которое и подставляется во второй запрос. Правда, я смотрю, у вас не совпадают значения Itemstype с именами таблиц. Значения Itemstype в единственном числе (Monitor), а таблица называется Monitors. Добавить эту s не проблема, но это же частный случай и вообще жуткий костыль. »
Сделала вот так:

select trim(concat(u.realname, ' ', u.firstname)) full_name
, x.name, x.otherserial, t.itilcategories_id, t.name, t.id, x.id
From glpi_tickets t, glpi_users u, glpi_items_tickets it,
(SELECT 'computer' name_tbl, id, name, otherserial, locations_id, users_id
FROM glpi_computers
UNION ALL
SELECT 'monitor' name_tbl, id, name, otherserial, locations_id, users_id
FROM glpi_monitors
UNION ALL
SELECT 'peripheral' name_tbl, id, name, otherserial, locations_id, users_id
FROM glpi_peripherals
UNION ALL
SELECT 'phone' name_tbl, id, name, otherserial, locations_id, users_id
FROM glpi_phones
UNION ALL
SELECT 'printer' name_tbl, id, name, otherserial, locations_id, users_id
FROM glpi_printers
)x
Where t.users_id_recipient = u.id
and t.date >= CURDATE()
and x.name_tbl = it.itemtype
and t.itilcategories_id = 9
and t.id = it.tickets_id
and it.items_id = x.id
and upper(trim(concat(u.realname, ' ', u.firstname))) = ?

---

shisik, y-- спасибо за помощь

Отправлено: 05:28, 25-10-2016 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MySQL - [решено] Связывание значения столбца с именем таблицы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Копирование таблицы (2 столбца) из файла .htm в Excel Serg2010 Скриптовые языки администрирования Windows 2 05-08-2015 22:18
2010 - Access. Установка значения из другой таблицы. Zerder Microsoft Office (Word, Excel, Outlook и т.д.) 0 27-05-2015 18:08
Разное - [решено] Не запускаются файлы с именем setup.exe (именно с именем) Temix Microsoft Windows 8 и 8.1 13 12-12-2014 22:05
MSFT SQL Server - [решено] Некоторые поля одной таблицы синкать с полями другой таблицы uptk Программирование и базы данных 5 01-09-2014 20:29
Удаление записей таблицы по данным другой таблицы xNiSSaNx Вебмастеру 4 02-08-2013 21:58




 
Переход