我创建了一个库存系统,主要使用服务器端脚本语言来完成所有工作。为了尝试获得一些性能提升,我希望更好地设计我的数据库以尝试最小化脚本。
我有一个名为metal_part的表,它与其他五个表有一对一的关系,基本上其他表是其他部分,这些部分与其他几个表有一对一的关系。
当我查询metal_part时,我需要每个表中的所有UPC编号,因此它的直接一对一关系需要从他们直接的一对一关系表中获取他们自己的信息等...是否可以进行大量查询构建它并将其放在一个表格中:
(###) - ####/##/##/## [a-z]
使用查询?或者我是否必须使用脚本语言获取所有信息并将其连接起来?
由于
答案 0 :(得分:2)
您应该能够使用标准连接获得所需的所有信息,然后使用适合您的数据库的concat函数(请参阅此处http://www.1keydata.com/sql/sql-concatenate.html),您可以形成所需的字符串。
答案 1 :(得分:0)
你的问题很模糊。
我猜你在谈论匹配一个名为partnumber的主键或类似的东西。
您可以使用
之类的查询来执行此操作SELECT mp.partnumber
, mp.UPC_number
, wp.UPC_number
, pp.UPC_number
FROM metal_parts mp
INNER JOIN wood_parts wp ON (wp.partnumber = mp.partnumber)
INNER JOIN plastic_parts pp ON (pp.partnumber = mp.partnumber)
WHERE mp.partnumber = '8874578127';
您也可以
SELECT mp.partnumber
, group_concat(mp.UPC_number) as metal_UPCs
, group_concat(wp.UPC_number) as wood_UPCs
, group(concat(pp.UPC_number) as plastic_UPCs
FROM metal_parts mp
INNER JOIN wood_parts wp ON (wp.partnumber = mp.partnumber)
INNER JOIN plastic_parts pp ON (pp.partnumber = mp.partnumber)
WHERE mp.partnumber = '8874578127'
GROUP BY mp.partnumber;
或
SELECT mp.partnumber
, concat_ws(','
, group_concat(mp.UPC_number)
, group_concat(wp.UPC_number)
, group(concat(pp.UPC_number)
) as UPCs_of_parts
FROM metal_parts mp
INNER JOIN wood_parts wp ON (wp.partnumber = mp.partnumber)
INNER JOIN plastic_parts pp ON (pp.partnumber = mp.partnumber)
WHERE mp.partnumber = '8874578127'
GROUP BY mp.partnumber;