使用from子句中的case子句选择表

时间:2010-08-30 04:52:41

标签: mysql subquery

我有8个表包含计算机外设的不同特定值,它们是glpi_device_ram,glpi_device_hdd,glpi_device_gfxcard,glpi_device_sndcard。每个表在每个表中都包含相同的designation列,其中包含设备名称。我有表glpi_computer_device包含FK_device,其中包含上面每个8表的id和设备类型列,帮助我决定哪个表(从上面的8个表)应该与FK_device关联以获得指定列。我已经创建了sql语法但没有工作。我需要知道是否允许使用CASE子句在FROM子句中选择表?这是我的代码

 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

1 个答案:

答案 0 :(得分:0)

不,这不起作用。 你应该将它构造为所有8个表的UNION - 然后用另一个select语句包装它以获取值。