2012-05-11 10 views
0

私はそれがきちんと仕事をしていません気づきました。UPDATEテーブル

問題がある:内部結合の内側にそれはサブクエリから作成したテーブルとテーブルNOEUDに参加している

。 noeudテーブルのすべてのノードではなく、サブクエリテーブルからnoeudだけを更新します。

n_amontが以前のnoeudであるため、サブクエリ(ケーブル距離1mのnoeud.n_amont = noeud.noeudを持つすべてのフィールドのリスト)で選択が適切に行われます。私はすべてのn_amontをテーブルnoeud全体からの対応するnoeudと一致する選択から更新したいと思います。

ありがとうございます。

UPDATE [SELECT noeuds.* FROM noeuds WHERE (((noeuds.LONG_CABLE)=" 1") AND (noeuds.DELETED=" "))]. AS a INNER JOIN noeuds AS n ON a.n_amont=n.noeud SET n.INSEE_COM = a.INSEE_COM, n.RIVOLI = a.RIVOLI, n.NUM_VOIE = a.NUM_VOIE 
WHERE ((n.INSEE_COM)="  "); 

誰でも手助けできますか?

EDIT:


私は(noueds)このテーブルを持っている:

NOEUD TYPE_MAT N_AMONT LONG_CABLE RIVOLI (+3 fields for update) 
123  REP  100  12   abc 
130  AMP  229  12    
173  PPP  130  1   AAA 

を私がノードを持っているものの後のノードからすべてのデータのアドレスを埋めるためにUPDATEクエリを書きたいです.LONG_CABLE = 1.たとえば

:私はすべてのノードを検索

LONG_CABLE = 1、私にnoeudを与える173; 130より前のノードは173の同じリボリを持つ必要があります。

このケーブルは、特定の通りにインストールされたこの装置のアドレスを示します。私がPPP(タイプ)を記入すると、アドレスは同じ極またはマンホールのアドレスに変換されません(1m離れた=コネクタ)。

私が投稿したこの質問では、前のノード(173)を持つノードを選択できますが、参加すると、他の装備から1m離れているとn_amont 130(ノード関連130)だけが参加します。この場合は無視され、アドレスは更新されません。 クエリはNOEUDSテーブルで実行され、更新が必要な装備品が見つかりました。

この問題を解決するには、

+0

[OK]を、上記のあなたの例では、NOEUD#130がNOEUDの#173と同じリヴォリを持っている必要がありますので、? #173のケーブルは1mですが、130は12mです。いいえ、130のケーブルの長さが1mだった場合はどうすればよいですか? – ristonj

+0

NOEUD#130は#173と同じアドレスを持つ必要があります。この表は、機器173がNoeud#130からの1mケーブルを使用して接続されているため、同じアドレスが必要であることを示しています。ノード3130は他のアドレスから離れており、他のアドレスは12m離れている。 – Odones

答えて

1

は、代わりにこれを試してみてください:

UPDATE noeuds INNER JOIN 
(SELECT noeuds.* FROM noeuds WHERE (((noeuds.LONG_CABLE)=" 1") AND (noeuds.DELETED=" "))) a ON noeuds.n_amount = a.n_amount 
SET noeuds.insee_com = a.insee_com, noeuds.rivoli = a.rivoli, noeuds.num_voie = a.num_voie 
+0

助けていただきありがとうございますが、構文では「更新...」を使用しないようにしてください – Odones

+0

@Odones私は自分の答えを更新しました。 – ristonj

+0

私は以前と同じ結果を得ました。 noeud = n_amontを使用して同じリストにケーブルリストの長さ1mの材料の選択を一致させ、n_amontと元のテーブルを一致させる必要があります。次からnメートル離れたすべての素材はリストされていませんが、収集されていないので、同じ住所を貼り付けることができます。 – Odones

関連する問題