У меня есть 8 таблиц, которые содержат различные конкретные значения для периферийных устройств компьютера: glpi_device_ram, glpi_device_hdd, glpi_device_gfxcard, glpi_device_sndcard.Каждая таблица имеет одинаковый столбец designation
в каждой таблице, содержащей имя устройства.У меня есть таблица glpi_computer_device, которая содержит FK_device, который содержит идентификатор для каждой таблицы 8 выше и столбец типа устройства, которые помогают мне решить, какую таблицу (из таблицы 8 выше) я должен связать с FK_device для получения столбца обозначения.Я создал синтаксис sql, но не работает.Мне нужно знать, разрешен ли выбор таблицы в предложении FROM с использованием предложения CASE?Вот мой код
SELECT CASE device_type
WHEN "1" THEN "Casing"
WHEN "2" THEN "Processor"
WHEN "3" THEN "RAM"
WHEN "4" THEN "Harddisk"
WHEN "5" THEN "Network Card"
WHEN "6" THEN "Drive"
WHEN "7" THEN "UNKNOWN"
WHEN "8" THEN "Graphic Card"
WHEN "9" THEN "Sound Card"
WHEN "10" THEN "Other device"
END AS devicetype,
CASE device_type
WHEN "1" THEN "--"
WHEN "2" THEN "Frequency"
WHEN "3" THEN "Size"
WHEN "4" THEN "Capacity"
WHEN "5" THEN "Mac Address"
WHEN "6" THEN "Memory Size"
WHEN "7" THEN "--"
WHEN "8" THEN "Memory Size"
WHEN "9" THEN "--"
WHEN "10" THEN "--"
END AS secificity_type,
specificity,
(SELECT c.designation
FROM (SELECT CASE cd.device_type
WHEN "2" THEN "glpi_device_processor"
WHEN "3" THEN "glpi_device_ram"
WHEN "4" THEN "glpi_device_hdd"
WHEN "5" THEN "glpi_device_iface"
WHEN "6" THEN "glpi_device_drive"
WHEN "8" THEN "glpi_device_gfxcard"
WHEN "9" THEN "glpi_device_sndcard"
WHEN "10" THEN "glpi_device_pci"
END
FROM glpi_computer_device cd
WHERE cd.ID = ID ) AS c
WHERE c.ID=FK_device)
FROM `glpi_computer_device`
WHERE FK_computers = 1