Tôi có 3 bảng trong cơ sở dữ liệu Postgres địa phương của tôi:Cập nhật Postgres với tham gia bên trong qua 2 bảng?
[myschema].[animals]
--------------------
animal_id
animal_attrib_type_id (foreign key to [myschema].[animal_attrib_types])
animal_attrib_value_id (foreign key to [myschema].[animal_attrib_values])
[myschema].[animal_attrib_types]
--------------------------------
animal_attrib_type_id
animal_attrib_type_name
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id
animal_attrib_value_name
Khi chạy tôi sẽ biết animal_id
. Tôi cần phải chạy SQL để cập nhật các animal_attribute_value_name
liên quan đến mặt hàng này, vì vậy cái gì đó như:
UPDATE
animal_attribute_values aav
SET
aav.animal_attribute_value_name = 'Some new value'
WHERE
# Somehow join from the provided animal_id???
tôi có thể phải làm một số loại lồng nhau SELECT
hoặc INNER JOIN
bên trong mệnh đề WHERE
, nhưng không chắc chắn làm thế nào để làm điều này. Cảm ơn trước!
Sửa:
Hãy nói rằng tôi có một kỷ lục animal
với các giá trị sau:
[myschema].[animals]
--------------------
animal_id = 458
animal_attrib_type_id = 38
animal_attrib_value_id = 23
Và tương ứng animal_attrib_value
(với id = 23) có các giá trị sau:
[myschema].[animal_attrib_values]
--------------------------------
animal_attrib_value_id = 23
animal_attrib_value_name = 'I am some value that needs to be changed.'
Khi chạy, tôi chỉ có animal_id
(458). Tôi cần tra cứu số animal_attrib_value
(23) tương ứng và thay đổi animal_attrib_value_name
thành 'Some new value'
, tất cả bên trong một câu lệnh UPDATE duy nhất.
ý nghĩa của [] xung quanh định danh là gì? – wildplasser
không có gì, chỉ có để thu hút thị giác; giúp tôi thấy "phân đoạn" (lược đồ, bảng, trường) dễ dàng hơn nhiều; đoán tôi đã mượn nó từ ngày MS SQL của tôi – IAmYourFaja
Ý định của bạn không rõ ràng. Bạn có muốn cập nhật một "động vật", thay đổi một trong các thuộc tính của nó thành (trỏ tới) một giá trị mới không? Ngoài ra: các định nghĩa bảng thực tế sẽ giúp ích. – wildplasser