2013-12-13 32 views
0
UPDATE animals 
     SET dog = dog + 1 
     from animal_names, color 
     WHERE animal_names.name = "Buddy" and color.name = "Yellow"; 

本質上,我想將「動物」表上的狗的數量加1。但是,動物使用外鍵「animal_names」和「color」。但是,我想更新動物而不使用這些外鍵的ID,而是希望使用與其ID相反的字符串。用於根據外鍵更新表的SQL語句

+0

呵呵?你有3桌(動物,animal_names,顏色)?他們之間有什麼聯繫? – Greg

+0

我認爲這個問題並不清楚。你應該首先解釋你的表結構是什麼,FK關係如何,然後解釋你需要的並給出代碼示例,並且提及它的工作方式,但是你需要改進,它會觸發一個錯誤。 –

回答

0

您只需在'update`的from部分指定關係。例如:

UPDATE animals 
SET dog = dog + 1 
FROM animals 
    INNER JOIN animal_names 
    ON animals.nameID = animal_names.nameID 
    INNER JOIN color 
    ON animals.colorID = color.colorID 
WHERE 
    animal_names.name = "Buddy" 
    AND 
    color.name = "Yellow" ; 

(假設,在這個例子中,你的主鍵是類似名稱的整數如上)

0

我不能工作了你的表結構 - 我不能完全看你怎麼會把狗放在動物桌上,所以我會猜測。

UPDATE animals 
     SET dog = dog + (
     select count(*) 
     from animal_names inner join color on (whatever) 
     WHERE animal_names.name = "Buddy" and 
     color.name = "Yellow" and 
     animal_names.animaltype='dog' 
    ) 

可能不太正確,但可能會幫助你。