2016-04-13 23 views
2

Ben ürünleri tabloda ürünlerin bir ton var katılmak. Her ürünün bir product_specification vardır. Tüm product_specification.document_type_id öğelerini '2' değerine güncellemem gerekiyor. İşte SO birlikte incelendiğinde daha geldi ne:select..where..in ile birden çok satır güncellenmesi ve bir

update product_specifications 
set product_specifications.document_type_id = 2 
inner join products 
on products.product_specification_id = product_specifications.id 
where products.id in (
    select p.id from products as p 
    inner join product_specifications as ps 
    on p.product_specification_id = ps.id 
    where p.store_front_id = 71 
    and ps.document_type_id = 1) 

Ama bu bence

+0

hakkında doktor? –

cevap

1

bu sorguyu kontrol ama kez aynı sorgular sürü yazmış ve ben gerçekten sana yardım edeceğiz inanıyoruz .. sen

UPDATE product_specifications ps INNER JOIN products p 
ON ps.id=p.product_specification_id 
SET ps.document_type_id = 2 
WHERE p.store_front_id = 71 AND ps.document_type_id = 1 

EDIT (here cevap bakınız) UPDATE birlikte JOIN kullanabilirsiniz: tekli ve çoklu tablolar hem GÜNCELLEME sözdizimi (docs here) bildiği gibi bazı fazla bilgiye

gibidir:

docs çoklu masa sözdizimi için

aşağıda birkaç satır belirtildiği gibi

ve her tabloda UPDATE güncelleştirmeleri satırlar table_references koşulları karşılayan içinde adını verdi. İşte

edinmeniz hangi hata table_references

0

Sorgunuzda biraz yanlış ... çalışmıyor ve ben, sen yazım hatası elde sanırım çünkü sen sözdizimi izlemelidir:

update tableName join anotherTableName set ... where ... 

ve ben gibi sorgu gerektiğini görünüyor düşünüyorum: Ben vermedi

update product_specifications 
inner join products 
on products.product_specification_id = product_specifications.id 
set product_specifications.document_type_id = 2 
where products.id in (
    select p.id from products as p 
    inner join product_specifications as ps 
    on p.product_specification_id = ps.id 
    where p.store_front_id = 71 and ps.document_type_id = 1 
) 

Sana da aynı tablo katılan yana iki sorguları kullanarak fayda görmüyorum ...

+1

OP neden "bunu dene"? Bir ** iyi cevap ** her zaman ne yapıldığını ve neden bu şekilde yapılmış bir açıklama, sadece OP için değil, bu soruyu bulabilir ve bu cevabı okuyan SO gelecek ziyaretçiler için bir açıklama olacaktır. Yorumunuz için – RiggsFolly

+0

Thx! Zaten açıklama eklendi ... –

İlgili konular