別のテーブルのレコードを使用して更新するテーブルがあり、あるシステム (データベース) から別のシステムに情報を引き継ぐためにこれを行っています。シナリオは少し複雑ですが、どうしても助けが必要です:-s
3 つのテーブルがあります - component
、scan
およびstage_link
成分
component_id stage_id
------------ --------
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
スキャン
scan_id component_id scanner_id date_scanned
------- ------------ ---------- -----------------------
1 1 scanner_a 2012-01-01 07:25:15.125
2 1 scanner_b 2012-01-02 08:14:05.456
3 2 scanner_a 2012-01-01 12:05:45.465
4 3 scanner_a 2012-01-01 19:45:12.536
5 1 scanner_c 2012-01-03 23:33:54.243
6 2 scanner_b 2012-01-02 11:59:12.545
stage_link
stage_link_id scanner_id stage_id
------- ---------- ----------
1 scanner_a 1
2 scanner_b 1
3 scanner_c 2
4 scanner_d 2
5 scanner_e 2
6 scanner_f 3
最新のスキャンに従ってupdate
、テーブルcomponent
とset
フィールドが必要です。stage_id
各スキャンは、関連するスキャナーに応じてコンポーネントをステージに移動します。update
テーブルに次のクエリを順番に書きましたが、次component
のエラーがスローされます。
Subquery returned more than 1 value. This is not permitted when the subquery follows '='
クエリは次のとおりです。
UPDATE component
SET stage_id = (select stage_id
from(
select scn.scanner_id, sl.stage_id
from scan scn
INNER JOIN stage_link sl ON scn.scanner_id = sl.scanner_id
where scn.date_scanned = ( select temp_a.max_date
from ( SELECT x.component_id, MAX(x.date_scanned) as max_date
FROM scan x
where component_id = x.component_id
GROUP BY x.component_id
) as temp_a
where component_id = temp_a.component_id)
) as temp_b
)
私は取り組んでおり、言語を使用せずに、または他の言語MS SQL Server
を使用してこれを整理したいと考えています。PHP
私はこれを機能させるために1日試みましたが、まだこれを機能させる方法がありませんでした。どんな助けでも大歓迎です!
事前にどうもありがとうございました :-)