我正在处理资产数据库问题。
我将资产输入数据库。每个对象都是资产,并且在资产表中包含变量。对象也是一种资产。在此示例中,类型为server。
以下是用于检索所有必要数据的查询:
SELECT asset.id
,asset.company
,asset.location
,asset.purchaseDate
,asset.purchaseOrder
,asset.value
,asset.type
,asset.notes
,server.manufacturer
,server.model
,server.serialNumber
,server.esc
,server.warranty
,server.user
,server.prevUser
,server.cpu
,server.memory
,server.hardDrive
FROM asset
LEFT JOIN server
ON server.id = asset.id
WHERE asset.id = '$id'
然后我将所有结果分配到单个php变量中。
如何编写查询/脚本来更新资产?
答案 0 :(得分:1)
由于您(可能)资产和服务器之间存在一对多关系,因此您需要单独更新它们:
UPDATE assets SET
company = '$company',
location = '$location', ...
WHERE id = $asset_id;
UPDATE servers SET
manufacturer = '$manufacturer',
model = '$model', ....
WHERE $id = $server_id
您必须执行第二次查询 n 次,其中 n 是与特定server
相关联的asset
的记录数。
另外,我希望你对这些变量保持谨慎 - 我们不希望Bobby Tables在这里。
<强>更新强>
好的,所以你可以在一个表中有一对一。在那种情况下,为什么要使用LEFT JOIN
? server
不应该是asset
,对吗?无论如何,回答,从我的头顶回答:
UPDATE assets, servers
SET
assets.company = ...,
servers.manufacturer = ...
WHERE assets.id = $id
AND servers.id = $id
答案 1 :(得分:0)
由于资产表和服务器表之间有1-1连接。它基本上是同一张桌子。如果您可以控制数据库布局,我会重新考虑它。
如果没有,你将不得不做两个更新电话,每个表一个,如@Amadan给你看