0

これが私のテーブルの関連する列です

  • bia_panels( id, sign_id, value, project_id)

  • bia_clients( id, name)

  • bia_projects( id, name, client_id, city_id)

  • bia_cities( id, name)

とと の値が空白ではないところに を更新しようとしてbia_panels.project_idいます もちろん、そこに到達するには複数の結合を使用する必要がありますbia_projects.idbia_panels.value = bia_clients.namepanels.project_id =000

    -- UPDATE
SELECT * FROM
`bia_panels` AS t1
    JOIN  bia_clients AS t2 
        ON t1.value = t2.name 
    JOIN bia_projects AS  t3 
        ON t2.id = t3.client_id 


-- SET t1.project_id = t3.id

-- WHERE t1.value<>'' AND t1.project_id = '000' 
WHERE t1.value <>''

問題は、これが正しい結果を与えていないことです (プロジェクト ID が結合のどこかで正しくないため、複数の結果が返されるため、それらは壊れます

選択部分を正しく取得できたら、更新を使用できることを知っています

たとえば、value=client.nameすべてが同じプロジェクト ID ではない複数のパネルが存在する場合があります。

4

2 に答える 2

0

クエリを UPDATE クエリに少し再編成します。

UPDATE bia_panels p, bia_clients c, bia_projects t
  SET p.project_id=t.id
  WHERE p.value=c.name
    AND t.client_id=c.id
    AND p.project_id=''
于 2013-09-27T14:20:17.367 に答える