如何从子表中获取序列号

时间:2014-06-12 11:18:04

标签: mysql subquery

我有两个表,一个是串行和主要的。我在下面显示了两种表格格式。我想得到下面的确切输出。我是这个领域的新手。请帮助我这样做。

串行

FLD_ID  FLD_SERIAL  FLD_TYPE
1   1234-34563-2323-2345    MONITOR
2   1234-34563-2323-2346    KEYBOARD
3   1234-34563-2323-2347    MONITOR
4   1234-34563-2323-2348    MONITOR
5   1234-34563-2323-2349    MONITOR
6   1234-34563-2323-2350    MONITOR
7   1234-34563-2323-2351    KEYBOARD
8   1234-34563-2323-2352    CPU
9   1234-34563-2323-2353    CPU
10  1234-34563-2323-2354    CPU

主要

FLD_ID  FLD_CPU FLD_MONITOR FLD_KEYBOARD
1           8   1           7
2           9   4   
3          10               2

预期产出

FLD_ID  FLD_CPU                 FLD_MONITOR         FLD_KEYBOARD
1   1234-34563-2323-2352    1234-34563-2323-2345    1234-34563-2323-2351
2   1234-34563-2323-2353    1234-34563-2323-2348    
3   1234-34563-2323-2354                        1234-34563-2323-2346

2 个答案:

答案 0 :(得分:0)

这样的事情对你有用:

SELECT 
  `FLD_ID`,
  IFNULL((SELECT `FLD_SERIAL` FROM `Serial` WHERE `FLD_ID` = `FLD_CPU`),'') AS `FLD_CPU`,
  IFNULL((SELECT `FLD_SERIAL` FROM `Serial` WHERE `FLD_ID` = `FLD_MONITOR`),'') AS `FLD_MONITOR`,
  IFNULL((SELECT `FLD_SERIAL` FROM `Serial` WHERE `FLD_ID` = `FLD_KEYBOARD`),'') AS `FLD_KEYBOARD`
FROM
  `Main`

答案 1 :(得分:0)

select FLD_ID, cpu.FLD_SERIAL as FLD_CPU, mon.FLD_SERIAL as FLD_MONITOR, kbd.FLD_SERIAL as FLD_KEYBOARD
from main
left join Serial as cpu on FLD_CPU = cpu.FLD_ID
left join Serial as mon on FLD_MONITOR = mon.FLD_ID
left join Serial as kbd on FLD_KEYBOARD = kbd.FLD_ID

(未测试的)

编辑: 为了确保数据库的一致性,还应检查标记为“CPU”的所有条目是否与主表中的cpu字段相对应,对于监视器和键盘也是如此。