我有两个表,一个是串行和主要的。我在下面显示了两种表格格式。我想得到下面的确切输出。我是这个领域的新手。请帮助我这样做。
串行
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
答案 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字段相对应,对于监视器和键盘也是如此。